1.Handler 是什么?
2.为什么要使用Handler?
3.Handler/Looper/MessageQueue/Message分别是做什么?
4.Handler如何去实现?
5.工作原理
6.如何更好的使用
Handler 线程与线程的处理关系(主要作用用于定时任务和实现不同线程间通信)
Looper 循环
Message 消息
MessageQueue 消息队列 存储消息
单线程
// 创建Handler
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
super.handleMessage(msg);
// 处理消息
Log.d(TAG,"handleMessage:" + msg.what);
}
};
findViewById(R.id.handler_btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//textView.setText("imooc");
new Thread(new Runnable() {
@Override
public void run() {
textView.setText("imooc");
}
}).start();
}
});
报了这个错
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
当程序第一次启动时,Android会启动一条主线程,用于负责接收用户的输入,将运行的结果反馈给用户,也称为UI线程,而子线程是指为了执行一些可能产生阻塞操作而新启动的线程也称为Worker线程
// 创建Handler
// 主线程
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
super.handleMessage(msg);
// 处理消息
Log.d(