IdleHandler學(xué)習(xí)

  • 方案淺析
  • 核心思路

啟動時間的計算蝶涩,無非是end-start
看怎么精確的抓取到這兩個timestamp
這個都很簡單的方法了
在application里加

public static void long START  = System.currentTimeMillis();

問題是轰驳,end time要在哪里獲取礁苗?

假設(shè)app的結(jié)構(gòu)如下

application-> splashActivity ->homeActivity

splashActivity做了一些init操作(不包括跳過廣告這樣的業(yè)務(wù)爬凑,只是必須要init一些第三方lib)

homeActivity才是真正業(yè)務(wù)上(有交互)的第一個Activity

以homeActivity真正展示界面為end節(jié)點。

end time要如何獲燃牌痢贰谣?

可能簡單來說娜搂,那么界面展示出來迁霎,就在homeActivity的onResume獲取啊吱抚。

可是onResume就真的是view已經(jīng)show出來了么?

答案是否定的考廉。第一次onResume的時候秘豹,實際上view還沒渲染出來。view.getWidth都拿不到值昌粤。

所以這樣去計算啟動時間既绕,會比實際值小。

所以必須要必須比onResume晚涮坐。

晚多久呢凄贩?

我們都知道view的繪制是放在主線程,那么等view繪制完袱讹,讓主線程通知我們就可以了馒疹。

這個通知的操作巡社,就利用了IdleHandler的特性。
IdleHandler是在整個消息隊列沒有任務(wù)空閑下來就開始工作。

//getMainLooper().getQueue() api 21
Looper.myQueue().addIdleHandler(new IdleHandler() {  
    @Override  
    public boolean queueIdle() {  
        //你要處理的事情
        return false;    
    }  
});

有點像Thread的join方法佩脊,Thread-A里調(diào)用了 Thread-B join,
那么Thread-A必須等Thread-B 的join跑完幌墓。

關(guān)于 IdleHandler 在 MessageQueue 與 Looper 和 Handler 的關(guān)系原理源碼分析見
http://www.reibang.com/p/a1d945c4f5a6

那么end time的獲取贬循,就放在idleHandler里。
在onCreate方法里加入

@Override
public void onCreate(){
...
Looper.myQueue().addIdleHandler(new IdleHandler() {  
    @Override  
    public boolean queueIdle() {  
        long end = System.currentTimeMillis();
        long duration = end -  Application.START;
        // 如果 是測量某個activity的完全啟動浦译,這個START時間就放在該activity的全局變量里
        return false;   //代表只執(zhí)行一次
    }  
});
...
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末棒假,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子精盅,更是在濱河造成了極大的恐慌淆衷,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渤弛,死亡現(xiàn)場離奇詭異祝拯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)她肯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門佳头,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人晴氨,你說我怎么就攤上這事康嘉。” “怎么了籽前?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵亭珍,是天一觀的道長敷钾。 經(jīng)常有香客問我,道長肄梨,這世上最難降的妖魔是什么阻荒? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮众羡,結(jié)果婚禮上侨赡,老公的妹妹穿的比我還像新娘。我一直安慰自己粱侣,他們只是感情好羊壹,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著齐婴,像睡著了一般油猫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上柠偶,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天情妖,我揣著相機(jī)與錄音,去河邊找鬼嚣州。 笑死鲫售,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的该肴。 我是一名探鬼主播情竹,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼匀哄!你這毒婦竟也來了秦效?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤涎嚼,失蹤者是張志新(化名)和其女友劉穎阱州,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體法梯,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡苔货,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了立哑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夜惭。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖铛绰,靈堂內(nèi)的尸體忽然破棺而出诈茧,到底是詐尸還是另有隱情,我是刑警寧澤捂掰,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布敢会,位于F島的核電站曾沈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鸥昏。R本人自食惡果不足惜塞俱,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望互广。 院中可真熱鬧敛腌,春花似錦卧土、人聲如沸惫皱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旅敷。三九已至,卻和暖如春颤霎,著一層夾襖步出監(jiān)牢的瞬間媳谁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工友酱, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留晴音,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓缔杉,卻偏偏與公主長得像锤躁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子或详,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

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