国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android Handler的詳解及實例

2019-10-22 18:32:13
字體:
來源:轉載
供稿:網友

Android Handler的詳解

Handler我們常常用于通知主線程做相對應的操作,但是如果使用不但的話就會造成內存泄露,所以記錄寫正確的Handler寫法。

Handler handler = new Handler() {    public void handleMessage(Message msg) {      //do something    };  };handler.sendEmptyMessageDelayed(0, 100 * 1000);

像上面的代碼片段,就會存在內存泄露的風險,因為handler占著Acitvity的引用阻止了系統進行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不會阻止系統進行回收操作,能有效的避免因為handler引起的內存泄露風險。

當然你使用handler那種寫法也不是不行的,需要你在結束Activity的時候handler.removeCallbacksAndMessages(null);讓系統能夠正常進行回收操作。

以上就是關于Android Handle 用法的詳解,關于Android 線程的文章,本站還有好多,大家可以參閱,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玉山县| 惠安县| 韶山市| 金溪县| 贵阳市| 赤壁市| 盐源县| 宁津县| 常德市| 精河县| 缙云县| 桑日县| 安多县| 永登县| 和田市| 华蓥市| 利津县| 辽宁省| 左贡县| 灵璧县| 黄浦区| 长沙市| 商水县| 丹寨县| 宁晋县| 永城市| 屯门区| 南昌县| 衡阳市| 弋阳县| 富阳市| 将乐县| 铜鼓县| 阿坝| 盐池县| 夹江县| 景东| 玉屏| 迭部县| 健康| 沂南县|