在Android中开发应用的过程中,经常会遇到一些比较耗时的操作,比如网络请求、读取文件等操作。由于Android有一种ANR机制,UI线程阻塞超过5s就会报ANR错误。因此这些耗时的操作需要在子进程里去做。单起一个子线程去做耗时操作,可以解决ANR问题。但同时还有一个问题,就是子线程完成了操作,如何通知主线程即UI线程去做UI方面的更改。这就用到Handler。
此处讲解的是子线程向主线程发送消息。与主线程向子线程发送消息有所不同。
Handler mHandler = new Handler(){
public void HandleMessage(Message msg){
super.HandleMessage(msg);
switch(msg.what){
case 0:
//Todo something for UI;
break;
}
}
};
new Thread(){
public void run(){
//Todo something. for example,
Time-consuming events.
Message msg = mHandler.obtainMessage();
msg.arg1 = 0;
mHandler.sendMessage(msg);
}
}.start();
参考:
http://ask.android-studio.org/?/article/101