handler控制界面UI的流程:
事件响应→开启线程→new Message();→new Bundle();→bundle.putString("event", "Handler更改UI");→msg.setData(bundle);→handler.sendMessage(msg);→new handler(msg.getdata→getString→更改UI)
runOnUiThread的流程:
事件响应→开启线程→new Message();→new Bundle();→bundle.putString("event", "Handler更改UI");→msg.setData(bundle);→handler.sendMessage(msg);→new handler(msg.getdata→getString→更改UI)
runOnUiThread的流程:
事件响应→开启线程→runOnUiThread→判断是否当前线程为主UI线程(是就立刻执行,不是就通过handler.post()发送到动作序列中(所以runOnUiThread的底层是handler),等到是主UI线程再立刻执行)
总结:hander的功能更强大,可以实现定制功能
如:
我们当我们的主线程队列,如果处理一个消息超过5秒,Android 就会抛出一个 ANP(无响应)的消息,所以,我们需要把一些要处理比较长的消息,放在一个单独线程里面处理,把处理以后的结果,返回给主线程运行,就需要用的Handler来进行线程建的通信