Android Handler的詳解及實例
Android Handler的詳解
Handler我們常常用于通知主線程做相對應的操作,但是如果使用不但的話就會造成內存泄露,所以記錄寫正確的Handler寫法。
Handler handler = new Handler() {
public void handleMessage(Message msg) {
//do something
};
};
handler.sendEmptyMessageDelayed(0, 100 * 1000);
像上面的代碼片段,就會存在內存泄露的風險,因為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結束回收的時候WeakReference不會阻止系統(tǒng)進行回收操作,能有效的避免因為handler引起的內存泄露風險。
當然你使用handler那種寫法也不是不行的,需要你在結束Activity的時候handler.removeCallbacksAndMessages(null);讓系統(tǒng)能夠正常進行回收操作。
以上就是關于Android Handle 用法的詳解,關于Android 線程的文章,本站還有好多,大家可以參閱,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
Android 自定義加載動畫Dialog彈窗效果的示例代碼
這篇文章主要介紹了Android 自定義加載動畫Dialog彈窗效果,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
Android Presentation實現(xiàn)雙屏異顯
這篇文章主要為大家詳細介紹了Android Presentation實現(xiàn)雙屏異顯,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-01-01
Android編程實現(xiàn)通知欄進度條效果的方法示例
這篇文章主要介紹了Android編程實現(xiàn)通知欄進度條效果的方法,結合實例形式較為詳細的分析了Android通知欄進度條效果的功能、布局相關實現(xiàn)方法與操作注意事項,需要的朋友可以參考下2018-02-02
Android RecyclerView的刷新分頁的實現(xiàn)
這篇文章主要介紹了Android RecyclerView的刷新分頁的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05
Flutter?文字中劃線動畫StrikeThroughTextAnimation
這篇文章主要為大家介紹了Flutter?文字中劃線動畫StrikeThroughTextAnimation示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04

