Activity本质和内部实现机制
今天把Activity全部內(nèi)容精簡一遍,activity最后一篇!
Activity本質(zhì)和內(nèi)部機制
與Activity相關(guān)的Framework層類
ActivityThread本質(zhì)上不是一個線程,是一個java類,ActivityThread是所在主線程中的一個類,它的啟動是調(diào)用main方法,其中內(nèi)部有幾個重點方法:
Looper.prepareMainLooper(); ActivityThread thread = new ActivityThread(); thread.attach(false); Looper.loop()ActivityThread的main()中,首先調(diào)用Looper.prepareMainLooper();然后調(diào)用ActivityThread()方法,但事實上這個方法并沒有繼承什么,是一個普通的方法,最重要的是attach()方法,這個方法主要與ActivityManagerService進行交互,首先調(diào)用ActivityManagerNative對象,這是一個遠程代理接口,以獲取遠程代理對象。之后調(diào)用attachApplication(),這個也是對Bundle傳輸數(shù)據(jù)。ActivityThread啟動完成后如何通知AMS呢?主要的方法有:
IActivityManager mgr = ActivityManagerNative.getDefault();
mgr.attachApplication(mAppThread);
下面來看ApplicationThread,這是一個很關(guān)鍵的類,它是繼承自ApplicationThreadNative類,ApplicationThreadNative類是一個Binder的子類,說明ApplicationThread需要與遠程端進行通信,即與ActivityManagerService進行通信,通信的過程封裝成一個Binder對象。
ActivityClientRecord是客戶端Activity的一個描述的類,是對客戶端的描述,
Context是一個接口,Activity其實是Context的一個子類。
Activity的生命周期的回調(diào):
Instrumentation用于輔助創(chuàng)建Application, 對生命周期的管理,啟動Activity。
ActivityManagerNative用于與遠程Service進行數(shù)據(jù)交互
H handle也是與遠程數(shù)據(jù)交互相關(guān)的類,調(diào)用了,handleLaunchActivity, performLaunchActivity。 classLoader加載相關(guān)Activity,Application對象創(chuàng)立,之后,activity.attach()
額,源碼看的心力憔悴,認輸,這次就先這樣吧,等我醞釀一段時間再說吧……尷尬ing(口吐白沫中……)
總結(jié)
以上是生活随笔為你收集整理的Activity本质和内部实现机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 概览屏幕(最新动态屏幕、最近任务列表)
- 下一篇: Android服务部分总结