欢迎光临
我们一直在努力

Android中Handler的作用是什么

这篇文章主要介绍“Android中Handler的作用是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android中Handler的作用是什么”文章能帮助大家解决问题。

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中Handler的作用是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注云搜网行业资讯频道,小编每天都会为大家更新不同的知识点。

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。