Android Handler的详解及实例
AndroidHandler的详解
Handler我们常常用于通知主线程做相对应的操作,但是如果使用不但的话就会造成内存泄露,所以记录写正确的Handler写法。
Handlerhandler=newHandler(){ publicvoidhandleMessage(Messagemsg){ //dosomething }; }; handler.sendEmptyMessageDelayed(0,100*1000);
像上面的代码片段,就会存在内存泄露的风险,因为handler占着Acitvity的引用阻止了系统进行GC回收操作。
privatestaticclassMyHandlerextendsHandler{ WeakReferencemWeakReferenceActivity; publicMyHandler(MainActivityactivity){ mWeakReferenceActivity=newWeakReference (activity); } @Override publicvoidhandleMessage(Messagemsg){ super.handleMessage(msg); if(null!=mWeakReferenceActivity){ MainActivity_activity=mWeakReferenceActivity.get(); //_activity.dosomething(); } } }
正确的做法是WeakReference存放存入的Activity,这样在Activity结束回收的时候WeakReference不会阻止系统进行回收操作,能有效的避免因为handler引起的内存泄露风险。
当然你使用handler那种写法也不是不行的,需要你在结束Activity的时候handler.removeCallbacksAndMessages(null);让系统能够正常进行回收操作。
以上就是关于AndroidHandle用法的详解,关于Android线程的文章,本站还有好多,大家可以参阅,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!