Handler一定要在主线程实例化吗?new Handler()和new Handler(Looper.getMainLooper())的区别
一般而言,如果你的Handler是要来刷新操作UI的,那么就需要在主线程下跑。
一般而言,如果你的Handler是要来刷新操作UI的,那么就需要在主线程下跑。
情况:
1.刷新UI
1.1主线程
Handler handler = new Handler() 那么这个会默认用当前线程的looper
1.2非主线程
要刷新UI ,Handler handler = new Handler(Looper.getMainLooper()) //Looper.getMainLooper()就表示放到主UI线程去处理。
2.不用刷新ui,只是处理消息
2.1 主线程
Handler handler = new Handler()
2.2 非主线程
Looper.prepare();
Handler handler = new Handler();
Looper.loop()
或者:
Handler handler = new Handler(Looper.getMainLooper()); //Looper.getMainLooper()就表示放到主UI线程去处理。
参考:http://blog.youkuaiyun.com/thanklife/article/details/17006865