我们创建的Service、Activity以及Broadcast均是一个主线程处理,这里我们可以理解为UI线程。但是在一些耗时操作时,比如I/O读写的大文件读写,数据库操作以及网络下载等需要很长时间,为了不阻塞用户界面,出现ANR的响应提示窗口,这是时候我们可以考虑使用THread线程来处理。
查阅了一些文档和APIdemo后,发现最常用的方法是利用handler来实现UI线程的更新。
方式为:Handler来根据接受的消息,处理UI更新。Thread线程发出Handler消息,通知更新UI。
示例代码:
Handler myHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case TestHandler.GUIUPDATEIDENTIFIER:
myBounceView.invalidate();
break;
}
super.handleMessage(msg);
}
};
class myThread implements Runnable {
public void run() {
while (!Thread.currentThread().isInterrupted()) {
Message message = new Message();
message.what = TestHandler.GUIUPDATEIDENTIFIER;
TestHandler.this.myHandler.sendMessage(message);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}