欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Android的基本世界觀(guān)——系統簡(jiǎn)介,組件邏輯及其他
前言

作為一個(gè)有半年余Android Developing折騰經(jīng)驗的Android Developer(為什么不說(shuō)“開(kāi)發(fā)經(jīng)驗”呢?因為我仔細想了想,我還沒(méi)有獨立地做出一個(gè)完善美觀(guān)且有使用價(jià)值的應用。),要系統地學(xué)習安卓平臺的基本開(kāi)發(fā)技能,那么第一步,了解并熟識Android的基本世界觀(guān),應該就是十分必要的了。以前這方面的知識體系不成系統,比較破碎零散,故借此文稍作整理。

我認為在進(jìn)入任何一個(gè)比較復雜的知識技能體系之前,都需要先用基本世界觀(guān)來(lái)熱熱身。對于高中物理而言,初中數學(xué)物理知識就形成了基本世界觀(guān);對于近體詩(shī)寫(xiě)作而言,平水韻和對仗的修辭手法就是基本世界觀(guān);而對于A(yíng)ndroid,基本世界觀(guān)則包括了Android系統的簡(jiǎn)介、四大組件的含義、以及其他一些基本的開(kāi)發(fā)邏輯。

Android系統歷史與現狀

Android(Android System),是一個(gè)基于Linux內核的開(kāi)源移動(dòng)操作系統,由Google旗下的Open Handset Alliance(OHA,開(kāi)放手持設備聯(lián)盟)持續領(lǐng)導與開(kāi)發(fā),主要設計用于觸屏移動(dòng)設備,如智能手機和平板電腦等。Android 1.0 beta于2007年11月5日問(wèn)世,至于世界上第一部真正意義上使用Android操作系統的設備,則是2008年10月22日發(fā)布的HTC Dream。Android系統采用Linux宏內核,系統核心語(yǔ)言是C和C++,主要的編程開(kāi)發(fā)語(yǔ)言是Java。截止2016年初,Android的最新版本是Android 6.0“Marshmallow”(棉花糖)。

系統與系統架構

Android系統執行于Linux kernel之上,但并不是GNU/Linux。實(shí)際上,Android大都并不支持GNU/Linux的一些功能。除了基于Linux的核心之外,則是中介層、數據庫元和用C/C++編寫(xiě)的API以及應用程序框架。Android的系統架構如下圖所示——

可見(jiàn),系統架構大致分為四層:Linux內核層,核心庫層(以及運行環(huán)境),應用框架層和應用層。

Linux內核層比較底層,通常也是對Developer隱藏的。

Android Runtime與Libraries層:

Android的應用程序通常以Java為基礎編寫(xiě),運行程序時(shí),應用程序的代碼會(huì )被即時(shí)轉變?yōu)镈alvik dex-code(Dalvik Executable),然后Android操作系統通過(guò)使用即時(shí)編譯的Dalvik虛擬機來(lái)將其運行。也就是說(shuō),Android應用程序是運行在Dalvik虛擬機里面的,并且每一個(gè)應用程序對應有一個(gè)單獨的Dalvik虛擬機實(shí)例(這也保證了如果一個(gè)Android應用程序進(jìn)程意外中止,將不會(huì )影響到其它應用程序進(jìn)程的正常運行。)。Dalvik Virtual Machine在某種角度上很像是JVM(至少我感覺(jué)如此),但實(shí)際上它們還是有不小的差異的。JVM是堆棧機器(基于Stack),但Dalvik VM是寄存器架構的機器。JVM執行class格式文件,而Dalvik VM執行dex格式文件。Dalvik VM會(huì )通過(guò)執行dex碼文件來(lái)完成堆棧管理、線(xiàn)程管理、安全異常管理、垃圾回收等重要功能,這些也和JVM很像。

Android系統還會(huì )通過(guò)一些C/C++庫來(lái)支持我們使用的各個(gè)組件(包括OpenGL,SQLite,WebKit等一大堆神奇的引擎和庫),這些功能通過(guò)應用程序框架提供給開(kāi)發(fā)者,這就是Libraries層。

Application Framework(應用框架)層:應用框架層的意義在于,Android提供給開(kāi)發(fā)者一個(gè)框架開(kāi)發(fā)平臺,開(kāi)發(fā)者在遵循框架原則和邏輯的基礎上,對框架進(jìn)行擴展從而開(kāi)發(fā)出各式各樣的app應用。開(kāi)發(fā)時(shí)也是通過(guò)這一層與底層進(jìn)行交互,并構建更上一級的應用層。這一層包括了各式各樣的系統API,同時(shí)也可以應用JNI等技術(shù)。應用框架包括了Activity Manager,Window Manager,Content Provider,View System等重要組成部分,可以理解為開(kāi)發(fā)者的一個(gè)工具箱。

應用層:這一層就是最為形象,和用戶(hù)直接接觸的層次了,包括電話(huà),短信,郵件和各式各樣的實(shí)用APP、游戲等。

其他特征
  • 開(kāi)發(fā)完成后,

    Android SDK 工具將代碼以及所有數據和資源文件一起編譯到一個(gè)APK

    : Android 軟件包,即 .apk 格式的存檔文件中。一個(gè) APK 文件包含 Android 應用的所有內容。
  • 默認情況下,每個(gè)應用都在自己的 Linux 進(jìn)程內運行。Android 會(huì )在需要執行任何應用組件時(shí)啟動(dòng)該進(jìn)程,然后在不再需要該進(jìn)程或系統必須為其他應用恢復內存時(shí)關(guān)閉該進(jìn)程。
  • 默認情況下,每個(gè)應用都只能訪(fǎng)問(wèn)執行其工作所需的組件,而不能訪(fǎng)問(wèn)其他組件。 在這樣的安全環(huán)境中,應用無(wú)法訪(fǎng)問(wèn)系統中其未獲得權限的部分,但仍然可以通過(guò)一些特定的途徑與其他應用共享數據以及訪(fǎng)問(wèn)系統服務(wù)。
  • 應用可以請求訪(fǎng)問(wèn)設備數據(如用戶(hù)的聯(lián)系人、短信、可裝入存儲裝置 [SD 卡]、相機、藍牙等)的權限。所有應用權限都必須由用戶(hù)在安裝時(shí)授予。這也就是安裝時(shí)會(huì )列出的“需要的權限”信息。
Android四大組件Activities

活動(dòng)一般就是一個(gè)單獨的用戶(hù)界面的屏幕。例如,一個(gè)電子郵件應用中可能具有一個(gè)顯示新郵件列表的 Activity、一個(gè)用于撰寫(xiě)新郵件的 Activity 以及一個(gè)用于閱讀郵件具體內容的 Activity。應用中的多個(gè)活動(dòng)通過(guò)協(xié)作和聚合的方式形成一種有機的整體,完善用戶(hù)體驗,但每個(gè)活動(dòng)都是獨立于其他活動(dòng)而存在的。在這個(gè)邏輯上而言,其他某個(gè)應用將可以啟動(dòng)電子郵件應用中的某一個(gè)活動(dòng),比如在相機應用在拍照后啟動(dòng)撰寫(xiě)新郵件的活動(dòng)。

一個(gè)應用通常由多個(gè)彼此松散聯(lián)系的 Activity 組成。一般會(huì )指定應用中的某個(gè) Activity 為“主” Activity,即首次啟動(dòng)應用時(shí)呈現給用戶(hù)的那個(gè) Activity。Activity之間通過(guò)Intent組件進(jìn)行通信。在開(kāi)發(fā)時(shí),每一個(gè)Activity都必須要在A(yíng)ndroidManifest.xml配置文件(即清單文件)中聲明,否則將無(wú)法識別也不執行該Activity。

關(guān)于Activity的生命周期:Activity 基本上以三種狀態(tài)存在,已繼續(運行中)、已暫停和已停止。關(guān)于活動(dòng)的七種方法和生命周期詳解,可見(jiàn)下圖:

Activity的基本方法:

public class ExampleActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// The activity is being created.}@Overrideprotected void onStart {super.onStart;// The activity is about to become visible.}@Overrideprotected void onResume {super.onResume;// The activity has become visible (it is now 'resumed').}@Overrideprotected void onPause {super.onPause;// Another activity is taking focus (this activity is about to be 'paused').}@Overrideprotected void onStop {super.onStop;// The activity is no longer visible (it is now 'stopped')}@Overrideprotected void onDestroy {super.onDestroy;// The activity is about to be destroyed.}}

這些方法共同定義 Activity 的整個(gè)生命周期——可以通過(guò)實(shí)現這些方法監控 Activity 生命周期中的三個(gè)嵌套循環(huán):

  • Activity 的整個(gè)生命周期發(fā)生在 onCreate 調用與 onDestroy 調用之間。
  • Activity 的可見(jiàn)生命周期發(fā)生在 onStart 調用與 onStop 調用之間。
  • Activity 的前臺生命周期發(fā)生在 onResume 調用與 onPause 調用之間。
Services

服務(wù)是一種在后臺運行的組件,用于執行長(cháng)時(shí)間運行的操作或為遠程進(jìn)程執行作業(yè)。服務(wù)不提供用戶(hù)界面。服務(wù)不影響其他活動(dòng)與用戶(hù)的交互,如用戶(hù)在瀏覽器中閱讀網(wǎng)頁(yè)時(shí),另外一個(gè)程序的服務(wù)可以在后臺播放歌曲?;顒?dòng)等其他組件可以啟動(dòng)服務(wù),讓其運行或與其綁定以便與其進(jìn)行交互。

服務(wù)有兩種,啟動(dòng)和綁定:

  • started:當應用組件(如 Activity)通過(guò)調用 startService 啟動(dòng)服務(wù)時(shí),服務(wù)即處于“啟動(dòng)”狀態(tài)。一旦啟動(dòng),服務(wù)即可在后臺無(wú)限期運行,即使啟動(dòng)服務(wù)的組件已被銷(xiāo)毀也不受影響??梢?jiàn),

    當服務(wù)是started狀態(tài)時(shí),其生命周期與啟動(dòng)它的組件無(wú)關(guān)。

  • bound:當應用組件通過(guò)調用 bindService 綁定到服務(wù)時(shí),服務(wù)即處于“綁定”狀態(tài)。綁定服務(wù)提供了一個(gè)客戶(hù)端-服務(wù)器接口,

    僅當與另一個(gè)應用組件綁定時(shí),綁定服務(wù)才會(huì )運行。

    調用者(如一個(gè)Activity)與服務(wù)綁定在了一起,調用者一旦退出,服務(wù)也就終止。多個(gè)組件可以同時(shí)綁定到該服務(wù),但全部取消綁定后,該服務(wù)即會(huì )被銷(xiāo)毀。

需要注意的是,服務(wù)也可以以?xún)煞N方式同時(shí)存在——問(wèn)題的關(guān)鍵在于回調方法的具體實(shí)現。另外,和Activity一樣,在程序清單中需要聲明所有服務(wù)。

服務(wù)的生命周期較為簡(jiǎn)單:

Content providers

內容提供者管理一組可以共享的應用數據,也叫內容提供程序。其他應用可以通過(guò)內容提供程序查詢(xún),甚至修改數據(如果內容提供程序允許)。 例如,Android 系統可提供管理用戶(hù)聯(lián)系人信息的內容提供程序。另外,內容提供程序也適用于讀取和寫(xiě)入不共享的私有數據。它的好處是統一了數據訪(fǎng)問(wèn)方式。Content Provider的主要用法是借助ContentResolver對象用作客戶(hù)端來(lái)與提供程序通信。

內容 URI是用于在提供程序中標識數據的 URI。內容 URI 包括整個(gè)提供程序的符號名稱(chēng)(其權限)和一個(gè)指向表的名稱(chēng)(路徑)。這里的URI以content://作為前綴,表示該數據由ContentProvider來(lái)管理。

Broadcast receivers

廣播接收器是一種用于響應系統范圍廣播通知的組件。 許多廣播都是由系統發(fā)起的—例如電池電量不足。應用也可以發(fā)起廣播,如通知其他應用某些數據已下載至設備且可供給使用。應用可以使用它對外部事件進(jìn)行過(guò)濾,只對感興趣的外部事件通知(如當電話(huà)呼入時(shí),或者WIFI網(wǎng)絡(luò )可用時(shí))進(jìn)行接收并做出響應。

廣播接收器不會(huì )顯示用戶(hù)界面,但它們可以創(chuàng )建狀態(tài)欄通知,在發(fā)生廣播事件時(shí)提醒用戶(hù)。Broadcast receiver的注冊有兩種方法,分別是程序動(dòng)態(tài)注冊和在A(yíng)ndroidManifest清單文件中進(jìn)行靜態(tài)注冊。這個(gè)組件可以看做是一種程序間通信的“橋梁”。

有關(guān)組件的其他

按照官方文檔自夸的說(shuō)法,Android系統設計的獨特之處在于,任何應用都可以啟動(dòng)其他應用的組件。例如,如果想讓用戶(hù)使用設備的相機拍攝照片,很可能有另一個(gè)應用已經(jīng)可以執行該操作,那么這個(gè)應用就可以利用另外一個(gè)應用,而不是開(kāi)發(fā)一個(gè) Activity來(lái)自行拍攝照片。

當系統啟動(dòng)某個(gè)組件時(shí),會(huì )啟動(dòng)該應用的進(jìn)程(如果尚未運行),并實(shí)例化該組件所需的類(lèi)。四種組件類(lèi)型中的三種—Activity、服務(wù)和廣播接收器—通過(guò)名為Intent的異步消息進(jìn)行啟動(dòng)。Intent會(huì )在運行時(shí)將各個(gè)組件相互綁定(可以將 Intent視為請求操作的信使)。

清單文件

在 Android 系統啟動(dòng)應用組件之前,系統必須通過(guò)讀取應用的AndroidManifest.xml文件(“清單”文件)確認組件存在。應用必須在此文件中聲明其所有組件,該文件必須位于應用項目目錄的根目錄中。AndroidManifest文件中未進(jìn)行聲明的活動(dòng)、服務(wù)以及內容提供者將不為系統所見(jiàn),從而也就不可用。

當然,清單文件還有別的重要作用,如:

  • 確定應用需要的任何用戶(hù)權限,如互聯(lián)網(wǎng)訪(fǎng)問(wèn)權限或對用戶(hù)聯(lián)系人的讀取權限。
  • 根據應用使用的 API,聲明應用所需的最低API 級別(如6.0系統的API Level就是23,4.3版本則是18)。
  • 聲明應用使用或需要的硬件和軟件功能,如相機、藍牙服務(wù)或多點(diǎn)觸摸屏幕。
應用資源

Android應用顯然并非只有代碼—它還需要與源代碼分離的資源,如圖像、音頻文件以及任何與應用的具體呈現有關(guān)的內容。對于每一項資源,SDK 構建工具都會(huì )定義一個(gè)唯一的整型 ID,利用它可以引用應用代碼或 XML 中定義的其他資源中的資源。各種資源理應放入項目 res/ 目錄的特定子目錄之下,常見(jiàn)的目錄有drawable, layout, mipmap, values等。

如何入門(mén)Android開(kāi)發(fā)

要入門(mén)Android開(kāi)發(fā),我個(gè)人認為需要做好的準備如下:

  1. 掌握Java語(yǔ)言,至少需要做到寫(xiě)代碼不會(huì )有語(yǔ)法錯誤。
  2. 初步了解Android的世界觀(guān),正如上文所述。
  3. 搭建開(kāi)發(fā)環(huán)境,配置好JVM環(huán)境(以及JDK等Java環(huán)境),Android Studio(谷歌官方推薦的開(kāi)發(fā)平臺,已取代Eclipse), Android SDK(用于A(yíng)DB,應用調試和API管理等)與Genymotion(目前流行的Android Virtual Device插件工具,勝于A(yíng)ndroid Studio自帶的AVD)。
  4. 學(xué)會(huì )有效地利用谷歌搜索和安卓官方網(wǎng)站。

以上就是成為一個(gè)Android Developer所需的簡(jiǎn)單準備條件,Android Developing本身是個(gè)復雜的體系,學(xué)習起來(lái)有不小的難度,需要耗費很多時(shí)間與精力,但是開(kāi)發(fā)本身無(wú)論如何都是一件快樂(lè )而充滿(mǎn)成就感的事情。

參考資料

這里列出本文的參考資料,同時(shí)也為讀者提供更多關(guān)于本文主題的閱讀素材。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Android 系統架構和應用組件那些事
Android安全研究經(jīng)驗談
Android平臺介紹
android
Android 架構
Android基礎知識總結
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久