日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android开发学习笔记(二)——编译和运行原理(2)

發(fā)布時間:2025/3/20 Android 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android开发学习笔记(二)——编译和运行原理(2) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

????? 上篇介紹了應用程序從源碼到安裝包的整個過程,考慮到篇幅過長,遂將原理內(nèi)容分成兩部分來介紹。接下來,在本篇中,主要介紹Android平臺應用程序的運行原理。

????? 在閱讀了SDK文檔中“Application Fundamentals”一篇的內(nèi)容后,根據(jù)自己的理解繪制了下面的示意圖:

????? 每個應用程序安裝后,系統(tǒng)便會為其分配一個獨立的存儲空間,所謂的“Security Sandbox”,用于存放字節(jié)碼文件、資源文件及配置文件等,同時,系統(tǒng)會為每一個應用程序分配唯一的ID,用以標識該應用程序的相關文件和資源,系統(tǒng)通過設置權(quán)限從而實現(xiàn)一個應用程序在一般情況下只能訪問該應用程序的文件和資源。當應用程序或者它的某個組件需要運行時,系統(tǒng)便為其創(chuàng)建一個Linux進程,每個進程中實例化一個Dalvik虛擬機用以執(zhí)行程序的字節(jié)碼。程序運行中根據(jù)給自己設定的權(quán)限來訪問相應的資源。這樣的設計保證了應用程序間的獨立性和安全性,但是,應用程序常常要訪問其他應用程序的數(shù)據(jù)或者訪問系統(tǒng)資源,為此,Android平臺提供了兩種方式來實現(xiàn)這一目的:
(1)可以安排兩個應用程序共享一個ID,從而可以彼此訪問對方的文件;還可以安排兩個應用程序在一個進程中運行,并共享一個虛擬機
(2)應用程序在安裝時,可以通過使用者來設置權(quán)限,根據(jù)設置的權(quán)限應用程序可以發(fā)起訪問系統(tǒng)資源和數(shù)據(jù)的請求。

---------------------------------------------------------------------------------------------------------------------------------------------------

了解應用程序運行原理的目的是為了構(gòu)建應用程序,因此了解上述內(nèi)容是遠遠不夠的,如果把上述內(nèi)容理解成物理結(jié)構(gòu),那么下面所講的便是以構(gòu)成應用程序的基本組件為主的邏輯結(jié)構(gòu)。

Android應用程序主要由四種不同類型的組件組成,分別是Activity(活動)、Service(服務)、Content Provider(內(nèi)容提供者)和Broadcast Receiver(廣播接收者):

◆Activity是一個顯示在設備屏幕上的用戶界面組件,有點兒類似視圖(View)。一個應用程序可以包含多個Activity來呈現(xiàn)其不同的功能界面。在某一個程序允許的前提下,另一個程序可以啟動該程序中的一個Activity來完成相應的功能。

◆Service是一個在后臺運行的,沒有用戶界面,用以執(zhí)行運行周期較長的操作或者執(zhí)行遠程進程的任務的組件。Activity可以啟動一個Service并與其綁定用以實現(xiàn)二者之間的交互。

◆Content Provider是一個用于數(shù)據(jù)共享的組件。無論應用程序是以何種數(shù)據(jù)持久化形式保存的數(shù)據(jù),通過Content Provider組件,其他應用程序可以訪問或修改該應用程序的數(shù)據(jù)。

◆Broadcast Receiver是一個相應系統(tǒng)范圍內(nèi)的廣播消息的組件。廣播以Intent對象的形式發(fā)送,Broadcast Receiver接收后根據(jù)其內(nèi)容作出相應操作。

Android系統(tǒng)這樣設計的目的就是凸顯組件的復用性,當一個程序需要使用另一個程序的組件時,首先需要向系統(tǒng)發(fā)送一個Intent來表明你的意圖,系統(tǒng)根據(jù)權(quán)限設定,在允許的條件下,將組件所在的應用程序的進程啟動,組件對應的類被實例化,組件執(zhí)行完需要的功能后,將結(jié)果返回到調(diào)用該組件的應用程序,所以,Android應用程序與其他系統(tǒng)的應用程序不同,即沒有單一的入口(例如Main函數(shù))。對于組件激活的方式,不同的組件有不同的方式。其中,Activity、Service和Broadcast Receiver是被所謂“Intent”的異步消息激活的,Intent將獨立的組件進行綁定;Content Provider是被來自Content Resolver的請求激活的。

????? 根據(jù)上述內(nèi)容,結(jié)合自己的理解,將Android應用程序創(chuàng)建和運行的過程用下圖描繪:

????? 上述內(nèi)容主要是對原理的宏觀描述,可能看著有點兒暈,后續(xù)的博文會結(jié)合具體的實例程序來詳細介紹。同時,這些畢竟是個人理解的結(jié)果,可能會有不少內(nèi)容描述不準確,希望各位經(jīng)驗豐富者積極指正,謝謝!

轉(zhuǎn)載于:https://www.cnblogs.com/Pickuper/archive/2011/06/18/2083263.html

總結(jié)

以上是生活随笔為你收集整理的Android开发学习笔记(二)——编译和运行原理(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。