FrameWork 之 Activity

Activity 與普通類 有什么區(qū)別?

Activity生命周期本質(zhì)

Activity在AMS中的處理邏輯(Activity Manager Service)

ActivityThread是什么?
ActivityThread 是運(yùn)行在 Activity主線程中的一個(gè)普通的java類.本身不是一個(gè)線程
在主線程方法中運(yùn)行---->調(diào)用ActivityThread main()方法
(消息隊(duì)列準(zhǔn)備, 啟動(dòng))
ActivityThread 源碼分析

main()

Looper.prepareMainLooper();//準(zhǔn)備消息隊(duì)列

public static void prepareMainLooper(){
 prepare(false);
 :
 :
 :
 .......
}

private static void prepare(boolean quitAllowed){
 if(sThreadLocal.get()!=null){
   throw new RuntimeException("Only one Looper may be created per Thread");
   sThreadLocal.set(new Looper(quitAllowed);//創(chuàng)建一個(gè)消息隊(duì)列
 }
}
//可以看出這一步主要是創(chuàng)建一個(gè)消息隊(duì)列

Looper.loop()

開(kāi)始循環(huán)處理消息

Thread.attach

主要處理和AMS的交互,通信

private void attach(boolean system){
  //ActivityManagerNative是AMS的遠(yuǎn)程代理對(duì)象,因?yàn)锳MS在一個(gè)單獨(dú)的線程當(dāng)中    代理模式?
  final IActivityManger mgr= ActivityManagerNative.getDefault();  

  try{
      mgr.attachApplication(mAppThread);//ApplictionThread類  調(diào)用遠(yuǎn)程binder文件 傳輸數(shù)據(jù)
  }catch(){}
}

ApplicationThread

private class ApplicationThread extends ApplicationThreadNative{
//往下看下繼承的類
}
 public  abstract class ApplicationThreadNative extends Binder implements IApplication
//和AMS 通信的一個(gè) Binder的具體實(shí)現(xiàn)類
處理具體的邏輯,在ActivityThread中初始化

ActivityClientRecord

定義Activity的描述的記錄,配置信息,Window等等等等..

Context是什么 --環(huán)境 相關(guān)資源

本身是一個(gè)接口.

Paste_Image.png
Activity extends ContextThemeWrapper //Activity是Context的一個(gè)實(shí)現(xiàn)類
public abstract class Context{
    //定義了一些 Acitity所需資源/方法
}

ContextWrapper  extends Context{  //具體實(shí)現(xiàn)
Context mBase;
public ContextWrapper(Context base){//傳進(jìn)來(lái)mbase
   mbase = base;
}
    //for example
  @override
   public Resources getResources(){
      return mBase.getResources();
  }
}

//mbase 是Context的具體實(shí)現(xiàn)類
class ContextImp extends Context{

}

Activity與其他類有什么不同

控制界面的顯示,由FrameWork統(tǒng)一處理和管理. 本質(zhì)與其他類相同同

Activity 生命周期

ActivityThread 控制Activity生命周期一些方法回調(diào),具體回調(diào)由AMS跨線程通信回調(diào)(結(jié)合前文理解)
ActivityThread中的一個(gè)成員變量H

Paste_Image.png

處理AMS跨線程通信的具體邏輯

Activity生命周期具體回調(diào)

Instrumentation

本質(zhì):負(fù)責(zé)打開(kāi)Activity的生命周期方法/創(chuàng)建Application對(duì)象 /啟動(dòng)Activity
for example:
startActivity();
startActivityForResult();最終都是調(diào)用此類
本質(zhì):輔助AMS管理Activity生命周期

ActivityManagerNative

本質(zhì):輔助AMS與客戶端跨線程交互(結(jié)合前文理解)

H類 H extends Handler

本質(zhì):處理AMS發(fā)送過(guò)來(lái)的具體消息 (看圖片)

框架層學(xué)習(xí)筆記,僅供參考,代碼為手打,錯(cuò)誤之處煩請(qǐng)指正,歡迎交流 qq:11417998

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捕儒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子阎毅,更是在濱河造成了極大的恐慌净薛,老刑警劉巖肃拜,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件燃领,死亡現(xiàn)場(chǎng)離奇詭異猛蔽,居然都是意外死亡灵寺,警方通過(guò)查閱死者的電腦和手機(jī)略板,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)种玛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)赂韵,“玉大人,你說(shuō)我怎么就攤上這事≈侍危” “怎么了蹂窖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)月趟。 經(jīng)常有香客問(wèn)我孝宗,道長(zhǎng)因妇,這世上最難降的妖魔是什么猿诸? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任址芯,我火速辦了婚禮窜觉,結(jié)果婚禮上禀挫,老公的妹妹穿的比我還像新娘语婴。我一直安慰自己,他們只是感情好画拾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著蜜另,像睡著了一般举瑰。 火紅的嫁衣襯著肌膚如雪此迅。 梳的紋絲不亂的頭發(fā)上耸序,一...
    開(kāi)封第一講書(shū)人閱讀 51,258評(píng)論 1 300
  • 那天坎怪,我揣著相機(jī)與錄音搅窿,去河邊找鬼男应。 笑死,一個(gè)胖子當(dāng)著我的面吹牛开仰,可吹牛的內(nèi)容都是我干的众弓。 我是一名探鬼主播隔箍,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼滨达,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起画株,我...
    開(kāi)封第一講書(shū)人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎续挟,沒(méi)想到半個(gè)月后诗祸,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體贬媒,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了投蝉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瘩缆。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡庸娱,死狀恐怖熟尉,靈堂內(nèi)的尸體忽然破棺而出斤儿,到底是詐尸還是另有隱情,我是刑警寧澤疆液,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布馅闽,位于F島的核電站福也,受9級(jí)特大地震影響暴凑,放射性物質(zhì)發(fā)生泄漏赘来。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望灸促。 院中可真熱鬧浴栽,春花似錦典鸡、人聲如沸萝玷。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)痴突。三九已至,卻和暖如春帮碰,著一層夾襖步出監(jiān)牢的瞬間拾积,已是汗流浹背拓巧。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工肛度, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人冠骄。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓扁誓,卻偏偏與公主長(zhǎng)得像阳堕,于是被迫代替她去往敵國(guó)和親恬总。 傳聞我的和親對(duì)象是個(gè)殘疾皇子壹堰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容