关于new Handler()与new Handler(Looper.getMainLooper())区别

若是你不带参数的实例化:Handler handler=new Handler();那么这个会默认用当前线程的Looper对象。oop

通常而言,若是你的Handler是要用来刷新UI的,那么就须要在主线程下运行。线程

状况:对象

1 要 刷新UI,handler要用到主线程的Looper对象。那么在主线程Handler handler=new Handler()  若是在其余非主线程也要知足这个功能的话,要Handler  handler=new Handler(Looper.getMainLooper());get

2 不用刷新UI ,只是处理消息。当前消息若是是主线程的话,Handler handler=new Handler ;不知主线程的话,Looper.prepare() Handler handler=new Handler();Looper.loop()   或者Handler  handler=new Handle(Looper.getMainLooper());loop

如果实例化的时候调用Looper.getMainLooper()就表示放到主线程中去处理。handler

如有不是的话,由于只有UI 线程默认Loop.prepare()  Loop.loop()过,其余线程须要手动调用这两个。不然会报错。消息

相关文章
相关标签/搜索