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

Android啟動優(yōu)化之延時加載的步驟詳解

 更新時間:2019年02月01日 10:49:22   作者:Android雜貨鋪  
這篇文章主要給大家介紹了關于Android啟動優(yōu)化之延時加載的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

在應用啟動的時候,為了加快啟動速度,往往需要把一些比較重的操作放到子線程中,或者是延時加載。將任務放在子線程中是一個比較簡單并且看起來有效的操作,但是呢,也不能太過于依賴子線程,它雖然不會阻塞主線程,但是卻會跟主線程搶占CPU,當子線程很多并且任務很重的時候,也還是會拖慢主線程的,不信你可以打出Systrace看一下。延時加載也是一個比較好的策略,但難點就在于延時多久,這個時間并不好掌控。

下面話不多說了,來一起看看詳細的介紹吧

IdleHandler

以前一直在想Android為什么不在Activity或者Fragment中提供一個接口,讓我們可以在主線程空閑的時候去執(zhí)行一些操作,后來發(fā)現(xiàn)真的有,但這個接口不是在Activity和Fragment中,而是在MessageQueue中,在MessageQuque的源碼中可以看到這么一個接口:

/**
* Callback interface for discovering when a thread is going to block
* waiting for more messages.
*/
public static interface IdleHandler {
 /**
 * Called when the message queue has run out of messages and will now
 * wait for more. Return true to keep your idle handler active, false
 * to have it removed. This may be called if there are still messages
 * pending in the queue, but they are all scheduled to be dispatched
 * after the current time.
 */
 boolean queueIdle();

}

簡單來說,就是當MessageQueue中沒有更多的消息的時候就會回調(diào)queueIdle()這個方法,返回true的話,當MessageQueue中沒有消息的時候還會繼續(xù)回調(diào)這個方法,返回false則會在執(zhí)行完之后移除掉這個監(jiān)聽。

原理就是這么簡單了,接下來就是動手優(yōu)化代碼了,代碼也很簡單。

@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 // ...

 // 拿到主線程的MessageQueue
 Looper.myQueue().addIdleHandler(new MessageQueue.IdleHandler() {

 @Override
 public boolean queueIdle() {
  // 在這里去處理你想延時加載的東西
  delayLoad();

  // 最后返回false,后續(xù)不用再監(jiān)聽了。
  return false;
 }
 });
}

寫起來一點都不難,只是我們需要掌握這么一個知識點而已。這里多說一句,網(wǎng)上很多關于冷啟動優(yōu)化的文章都說到了ViewPager的懶加載,即等到用戶滑動過去的時候才去加載界面,我們在項目中最開始也是這樣做的,但其實這樣的體驗真的很不好,所以我們利用IdleHandler做了一個延時加載,即不影響主界面的啟動工作,又能在主線程空閑下來的時候立刻去加載出其它的Tab,在性能和體驗之間找到一個最好的平衡。

參考資料

你知道android的MessageQueue.IdleHandler嗎?

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • android讀取掃碼模組數(shù)據(jù)的方法

    android讀取掃碼模組數(shù)據(jù)的方法

    這篇文章主要為大家詳細介紹了android讀取掃碼模組數(shù)據(jù)的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Android開發(fā)X Y軸Board的繪制教程示例

    Android開發(fā)X Y軸Board的繪制教程示例

    這篇文章主要為大家介紹了Android開發(fā)X Y軸Board的繪制教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • Android實現(xiàn)簡單的音樂播放器

    Android實現(xiàn)簡單的音樂播放器

    這篇文章主要為大家詳細介紹了Android實現(xiàn)簡單的音樂播放器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Android實現(xiàn)WebView點擊攔截跳轉原生

    Android實現(xiàn)WebView點擊攔截跳轉原生

    這篇文章主要介紹了Android實現(xiàn)WebView點擊攔截跳轉原生,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Android 滑動定位和吸附懸停效果實現(xiàn)代碼

    Android 滑動定位和吸附懸停效果實現(xiàn)代碼

    這篇文章主要介紹了Android 滑動定位和吸附懸停效果實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Android中Activity的四種啟動模式和onNewIntent()

    Android中Activity的四種啟動模式和onNewIntent()

    android 中activity的啟動模式分為四種,(standard、singleTop、singTask、singleInstance),本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-08-08
  • Android 界面開發(fā)顏色整理

    Android 界面開發(fā)顏色整理

    本文主要介紹Android 界面開發(fā)的顏色,這里整理了很多顏色以供大家參考,希望Android 開發(fā)的工作者可以參考使用
    2016-07-07
  • Android實現(xiàn)圖像切換器

    Android實現(xiàn)圖像切換器

    這篇文章主要為大家詳細介紹了Android實現(xiàn)圖像切換器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Android 中 EventBus 的使用之多線程事件處理

    Android 中 EventBus 的使用之多線程事件處理

    這篇文章主要介紹了Android 中 EventBus 的使用之多線程事件處理的相關資料,需要的朋友可以參考下
    2015-11-11
  • Android 監(jiān)聽Notification 被清除實例代碼

    Android 監(jiān)聽Notification 被清除實例代碼

    本文主要介紹Android 監(jiān)聽Notification 事件,這里給大家提供實例代碼進行參考,有需要的小伙伴可以參考下
    2016-07-07

最新評論

吐鲁番市| 墨竹工卡县| 商洛市| 开阳县| 云南省| 云龙县| 措勤县| 安庆市| 克东县| 闻喜县| 孟连| 射阳县| 集贤县| 和政县| 东台市| 潞城市| 苗栗市| 马龙县| 高密市| 怀柔区| 兴仁县| 永修县| 郸城县| 资溪县| 大邑县| 泰宁县| 邵武市| 乌恰县| 崇仁县| 阿图什市| 怀化市| 铜鼓县| 榕江县| 浙江省| 定日县| 信丰县| 阜平县| 河间市| 尼玛县| 花莲市| 涡阳县|