Android Handler的詳解及實例
Android Handler的詳解
Handler我們常常用于通知主線程做相對應的操作,但是如果使用不但的話就會造成內(nèi)存泄露,所以記錄寫正確的Handler寫法。
Handler handler = new Handler() { public void handleMessage(Message msg) { //do something }; }; handler.sendEmptyMessageDelayed(0, 100 * 1000);
像上面的代碼片段,就會存在內(nèi)存泄露的風險,因為handler占著Acitvity的引用阻止了系統(tǒng)進行GC回收操作。
private static class MyHandler extends Handler { WeakReference<MainActivity> mWeakReferenceActivity; public MyHandler(MainActivity activity) { mWeakReferenceActivity = new WeakReference<MainActivity>(activity); } @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (null != mWeakReferenceActivity) { MainActivity _activity = mWeakReferenceActivity.get(); //_activity.dosomething(); } } }
正確的做法是WeakReference存放存入的Activity,這樣在Activity結(jié)束回收的時候WeakReference不會阻止系統(tǒng)進行回收操作,能有效的避免因為handler引起的內(nèi)存泄露風險。
當然你使用handler那種寫法也不是不行的,需要你在結(jié)束Activity的時候handler.removeCallbacksAndMessages(null);讓系統(tǒng)能夠正常進行回收操作。
以上就是關(guān)于Android Handle 用法的詳解,關(guān)于Android 線程的文章,本站還有好多,大家可以參閱,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
Android Studio進行APP圖標更改的兩種方式總結(jié)
這篇文章主要介紹了Android Studio進行APP圖標更改的兩種方式總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06Android AlertDialog多種創(chuàng)建方式案例詳解
這篇文章主要介紹了Android AlertDialog多種創(chuàng)建方式案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08Fultter NestedScrollView實現(xiàn)吸頂效果以及遇到問題解析
這篇文章主要為大家介紹了Fultter NestedScrollView實現(xiàn)吸頂效果以及遇到問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09Android開發(fā)之a(chǎn)ndroid_gps定位服務簡單實現(xiàn)
這篇文章主要介紹了Android開發(fā)之a(chǎn)ndroid_gps定位服務簡單實現(xiàn) ,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04Android利用Chronometer實現(xiàn)倒計時功能
這篇文章主要為大家詳細介紹了Android利用Chronometer實現(xiàn)倒計時功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11