9.1 四大組件的運(yùn)行狀態(tài)
Android四大組件中除了BroadcastReceiver以外炊汤,其他三種組件都必須在Manifest中注冊(cè)授段,廣播可以靜態(tài)注冊(cè)或者動(dòng)態(tài)注冊(cè)史煎;
Activity:是一種展示型組件阔籽,用于向用戶直接地顯示一個(gè)界面吱肌,并且可以接受用戶的輸入信息從而進(jìn)行交互纲缓,Activity由intent觸發(fā)卷拘,其中Intent可以分為顯示Intent,和隱式Intent,同一個(gè)Activity在不同的啟動(dòng)模式下會(huì)有不同的效果
Service:是一種計(jì)算型組件,用于在后臺(tái)執(zhí)行一系列計(jì)算任務(wù)祝高,Service有啟動(dòng)狀態(tài)和綁定狀態(tài)栗弟,當(dāng)Service組件處于啟動(dòng)狀態(tài),Service可以做一些后臺(tái)計(jì)算工闺,并且不需要和外界有直接的交互乍赫,當(dāng)Service處于綁定狀態(tài)瓣蛀,這個(gè)時(shí)候Service內(nèi)部同樣可以進(jìn)行后臺(tái)計(jì)算,但是處于這種狀態(tài)可以很方便的外界進(jìn)行通信雷厂。
BroadcastReceiver:是一種消息型組件惋增,用于在不同的組件乃至不同的應(yīng)用之間傳遞消息,廣播的注冊(cè)方式有兩種:靜態(tài)注冊(cè)和動(dòng)態(tài)注冊(cè)改鲫。靜態(tài)注冊(cè)是指在Mannifest中注冊(cè)诈皿,這種方式注冊(cè)的廣播會(huì)在應(yīng)用安裝時(shí)被系統(tǒng)解析,此種形式的廣播不需要應(yīng)用啟動(dòng)就能收到廣播像棘。動(dòng)態(tài)廣播需要需要通過(guò)context.registerReceiver來(lái)注冊(cè)稽亏,并且在不需要的時(shí)候需要context.unregisterReceiver來(lái)解注冊(cè),此種形態(tài)的廣播需要應(yīng)用啟動(dòng)才能注冊(cè)并且接收廣播讲弄。
ContentProvider:是一種消息共享型組件,用于向其他組件乃至其他應(yīng)用共享數(shù)據(jù)依痊,它的內(nèi)部需要通過(guò)增刪改查來(lái)實(shí)現(xiàn)避除。
Activity.startActivity->Activity.startActivityForResult->Instrumentation.execStartActivity
->ActivityManagerNative.getDefalut.startActivity->IPC->服務(wù)端AMS.startActivity->進(jìn)入ActivityStackSupervisor和ActivityStack的方法調(diào)用鏈->ActivityStackSupervisor.reStartActivityLocked
->ApplicationThreadProxy.scheduleLaunchActivity->IPC->ApplicationThread.scheduleLaunchActivity
->Handler->ActivityThread.handleLaunchActivity->ActivityThread.performLaunchActivity;
客戶端:ActivityManagerProxy =====>Binder驅(qū)動(dòng)=====> ActivityManagerService:服務(wù)器
客戶端:ApplicationThread <=====Binder驅(qū)動(dòng)<===== ApplicationThreadProxy:服務(wù)器
abstract ActivityManagerNative extends Binder implements IActivityManager:相當(dāng)于Stub
ActivityManagerProxy implements IActivityManager:Proxy代理類ActivityManagerService extends ActivityManagerNative:AMS,Stub的實(shí)現(xiàn)類
IActivityManager:AIDL接口
abstract ApplicationThreadNative extends Binder implements IApplicationThread:相當(dāng)于Stub ApplicationThreadProxy implements IApplicationThread :Proxy代理類,服務(wù)端,ActivityThreadNative內(nèi)部類
ApplicationThread extends ApplicationThreadNative: Stub的實(shí)現(xiàn)類,客戶端胸嘁,Activity內(nèi)部類
IApplicationThread:AIDL接口