源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Android Handler的详解及实例

  • 时间:2022-05-21 14:21 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android Handler的详解及实例
[b]Android Handler的详解[/b] 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 线程的文章,本站还有好多,大家可以参阅,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部