new Handler(Looper.getMainLooper()).post(runnable);//在子线程中直接去new 一个handler//这种情况下,Runnable对象是运行在主线程中的,不可以进行联网操作,但是可以更新UI } }.start(); 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17....
public void run() { Looper.prepare(); new Handler().post(runnable);//在子线程中直接去new 一个handler Looper.loop(); //这种情况下,Runnable对象是运行在子线程中的,可以进行联网操作,但是不能更新UI } }.start(); 方法2:通过Looper.getMainLooper(),获得主线程的Looper,将其绑定到此Handler对象上。
1. 二者区别 new Handler():如果是在主线程是没有问题的,如果是在子线程中,会报错; new Handler(Looper.getMainLooper()):确保创建的Handler永远在主线程中,Looper要是主线程中的Looper 所以,如果在代码中需要new Handler()的话,可以使用 new Handler(Looper.getMainLooper()),可以确保Handler是在主线程中;...
创建的一个Handle,它引用的是主线程已经定义好的looper。另外:在主线程中创建的Handle,默认就是Mainlooper,可以不写。祝:学习愉快 0 0 学习 · 1800 问题 查看课程 相似问题 在这个类中new了一个handle, 那么这个handle也不是在UI线程中的handle呀? 回答1 之前将用post的时候,直接newhandler对象就可以了呀 ...
一般而言,如果你的Handler是要用来刷新UI的,那么就需要在主线程下运行。 情况: 1要 刷新UI,handler要用到主线程的Looper对象。那么在主线程Handler handler=new Handler() 如果在其他非主线程也要满足这个功能的话,要Handler handler=new Handler(Looper.getMainLooper()); ...
Looper.prepare(); new Handler().post(runnable);//在⼦线程中直接去new ⼀个handler Looper.loop(); //这种情况下,Runnable对象是运⾏在⼦线程中的,可以进⾏联⽹操作,但是不能更新UI } }.start();⽅法2:通过Looper.getMainLooper(),获得主线程的Looper,将其绑定...
1要 刷新UI,handler要用到主线程的Looper对象。那么在主线程Handler handler=new Handler() 如果在其他非主线程也要满足这个功能的话,要Handler handler=new Handler(Looper.getMainLooper()); 2 不用刷新UI ,只是处理消息。当前消息如果是主线程的话,Handler handler=new Handler ;不知主线程的话,Looper.prepare(...
只进行处理消息操作。 当前线程如果是主线程的话,使用Handler handler = new Handler();不是主线程的话,Handler handler = new Handler(Looper.getMainLooper()); 若是实例化的时候用Looper.getMainLooper()就表示放到主UI线程去处理。 如果不是的话,其他线程需要传入主线程的MainLooper...
1.要刷新UI,handler要用到主线程的looper。那么在主线程 Handler handler = new Handler();,如果在其他线程,也要满足这个功能的话,要Handler handler = new Handler(Looper.getMainLooper()); 2.不用刷新ui,只是处理消息。 当前线程如果是主线程的话,Handler handler = new Handler();不是主线程的话,Looper.pr...
Looper&Handler 2019-12-18 20:31 −Looper类:封装消息循环,并有一个消息队列(关键) Handler类:封装了消息投递,消息处理等接口 Looper.perpare() 1. sThreadLocal.set(new Looper)会在调用线程得局部变量中设置一个Looper(1.构造一个消息队列2... 无...