当前位置: 移动技术网 > IT编程>移动开发>Android > Android Handler的详解及实例

Android Handler的详解及实例

2019年07月24日  | 移动技术网IT编程  | 我要评论

李智友图片,通宝巴士,清徐网

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 线程的文章,本站还有好多,大家可以参阅,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网