最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android?IdleHandler基本使用及應(yīng)用案例詳解

 更新時間:2022年10月11日 15:30:49   作者:長安皈故里  
這篇文章主要為大家詳細介紹了Android?IdleHandler的基本使用及應(yīng)用案例,文中的示例代碼講解詳細,具有一定的參考價值,需要的可以參考一下

IdleHandler基本使用

IdleHandler原型

public static interface IdleHandler {
    boolean queueIdle();
}

不看源碼直接上結(jié)論,Android應(yīng)用的運行都是靠著一條條Message入隊、出隊、執(zhí)行實現(xiàn),當應(yīng)用主線程的消息隊列空閑的時候(消息隊列沒有消息或下一次消息執(zhí)行的時間還未到),就會嘗試去執(zhí)行IdleHandler集合。

其中:IdleHandlerqueueIdle方法的返回值如果為false,那么IdleHandler執(zhí)行完之后就會被移除,也就是說只會被執(zhí)行一次;如果返回值為true,不會被移除且可以被執(zhí)行多次。

所以我們就可以向消息隊列的IdleHandler集合中插具體的IdleHandler在應(yīng)用主線程空閑的時候執(zhí)行一些操作,基本的使用如下:

Looper.getMainLooper().queue.addIdleHandler {
    true
}

案例1:執(zhí)行GC

大家都知道,不能隨便在主線程執(zhí)行GC,否則很容易造成卡頓,但是我們可以在主線程空閑的時候去執(zhí)行GC,這個時候就可以利用IdleHandler,Android源碼中就有如下使用:

#ActivityThread
void scheduleGcIdler() {
    Looper.myQueue().addIdleHandler(mGcIdler);
}

final class GcIdler implements MessageQueue.IdleHandler {
    @Override
    public final boolean queueIdle() {
        doGcIfNeeded();
    }
}

void doGcIfNeeded(String reason) {
     //執(zhí)行GC
     BinderInternal.forceGc(reason);
}

這樣既可以滿足gc回收對象的需要,又不會影響主線程中其他任務(wù)的執(zhí)行

案例2:粗估Activity界面渲染時間

我們首先要明確界面渲染流程是發(fā)生在Activity的onResume生命周期,往主線程消息隊列添加消息屏障(之后添加的Message只能執(zhí)行異步類型的),然后發(fā)送界面渲染異步Message,等到界面渲染完成后才會從消息隊列移除屏障消息,這個時候才能正常執(zhí)行其他Message。

參考下滴滴的DoKit開源庫:

我們現(xiàn)在onResume方法中記錄界面開始渲染時間,添加一個IdleHandler,這個會在界面渲染相關(guān)Message執(zhí)行完畢后再執(zhí)行它,所以就可以簡單的估算出界面渲染時長。

案例3:App大圖監(jiān)測

常見的大圖監(jiān)控方法都是將ImageView替換成自定義ImageView,然后重寫設(shè)置圖片的方法,比如setImageBitmap()等等,在方法中計算下圖片的寬高是否超過ImageView的寬高,是就彈出一個彈窗提醒開發(fā)者,一般在Debug環(huán)境下執(zhí)行這種檢測。

Debug環(huán)境下開啟大圖檢測,一般為了避免影響主線程其他任務(wù)執(zhí)行,都會添加一個IdleHandler等主線程空閑了再去執(zhí)行大圖檢測:

案例4:延遲啟動初始化任務(wù)

一般我們都在ApplicationonCreate方法中執(zhí)行任務(wù)(比如第三方SDK)的初始化,可是如果執(zhí)行的初始化任務(wù)過多就會增加啟動耗時,給用戶帶來較差體驗。

而且有的任務(wù)并不是一定就需要在ApplicationonCreate就必須要執(zhí)行,可以延遲初始化,減少應(yīng)用啟動耗時,這個時候就可以把相關(guān)延遲任務(wù)添加到一個Idlehandler中去執(zhí)行。

到此這篇關(guān)于Android IdleHandler基本使用及應(yīng)用案例詳解的文章就介紹到這了,更多相關(guān)Android IdleHandler內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android獲取和讀取短信驗證碼的實現(xiàn)方法

    Android獲取和讀取短信驗證碼的實現(xiàn)方法

    這篇文章主要介紹了Android獲取和讀取短信驗證碼的實現(xiàn)方法,文章內(nèi)容介紹了如何讀取剛收到的短信的相關(guān)內(nèi)容,以及Android獲取短信驗證碼的方法,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Android自定義Animation實現(xiàn)View搖擺效果

    Android自定義Animation實現(xiàn)View搖擺效果

    這篇文章主要為大家詳細介紹了Android自定義Animation實現(xiàn)View搖擺效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Android自定義單選多選下拉列表的實例代碼

    Android自定義單選多選下拉列表的實例代碼

    本篇文章主要介紹了Android自定義單選多選下拉列表的實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Android在一個app中安裝并卸載另一個app的示例代碼

    Android在一個app中安裝并卸載另一個app的示例代碼

    這篇文章主要介紹了Android在一個app中安裝并卸載另一個app的示例代碼,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Android?imageVIew實現(xiàn)鏡像旋轉(zhuǎn)的方法

    Android?imageVIew實現(xiàn)鏡像旋轉(zhuǎn)的方法

    在Android應(yīng)用開發(fā)中,有時候我們需要對ImageView中的圖片進行鏡像旋轉(zhuǎn),以展示不同的效果,本文將介紹如何使用代碼實現(xiàn)ImageView的鏡像旋轉(zhuǎn)效果,這篇文章主要介紹了Android?imageVIew如何做鏡像旋轉(zhuǎn),需要的朋友可以參考下
    2024-06-06
  • Android自定義View模仿QQ討論組頭像效果

    Android自定義View模仿QQ討論組頭像效果

    最近發(fā)現(xiàn)QQ討論組的頭像非常不錯,正好最近又有時間,所有就動手實踐了下,所以下面這篇文章主要給大家介紹了Android自定義View模仿QQ討論組頭像效果的相關(guān)資料,文中給出了詳細的介紹的示例代碼,需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。
    2017-04-04
  • Android垃圾回收機制解決內(nèi)存泄露問題

    Android垃圾回收機制解決內(nèi)存泄露問題

    這篇文章主要介紹了Android垃圾回收機制解決內(nèi)存泄露問題的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • Android手勢密碼view學(xué)習(xí)筆記(一)

    Android手勢密碼view學(xué)習(xí)筆記(一)

    這篇文章主要為大家詳細介紹了Android手勢密碼view的學(xué)習(xí)筆記,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • android 設(shè)置控件的顏色字體的方法

    android 設(shè)置控件的顏色字體的方法

    這篇文章介紹了android 設(shè)置控件的顏色字體的方法,有需要的朋友可以參考一下
    2013-09-09
  • Android軟件自動更新實現(xiàn)代碼

    Android軟件自動更新實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了Android軟件自動更新實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10

最新評論

黑水县| 五指山市| 察隅县| 海兴县| 兰西县| 新乐市| 栾城县| 利川市| 宁强县| 韩城市| 静海县| 紫金县| 成安县| 旌德县| 鄂托克旗| 汕尾市| 太仆寺旗| 祁东县| 阿坝县| 济源市| 西丰县| 乌海市| 五河县| 卢湾区| 虹口区| 普安县| 眉山市| 延津县| 东方市| 古蔺县| 阳江市| 开封市| 奉新县| 周宁县| 永安市| 高清| 鸡东县| 襄汾县| 教育| 唐河县| 嘉兴市|