标签:
HandlerThread最大的优势在于引入MessageQueue概念,可以进行多任务队列管理。
HandlerThread背后只有一个线程,所以任务是串行依次执行的。串行相对于并行来说更安全,各任务之间不会存在多线程安全问题。
HandlerThread所产生的线程会一直存活,Looper会在该线程中持续的检查MessageQueue,并开启消息处理的循环。这一点和Thread(),AsyncTask都不同,thread实例的重用可以避免线程相关的对象的频繁重建和销毁。 getLooper().quit();来退出这个线程,其实原理很简单,就是改变在消息循环里面标志位,退出整个while循环,使线程执行完毕。
部分 测试代码如下:
public void onCreate(Bundle savedInstanceState) {
不过要注意:要想更新界面内容,还是需要使用主线程的Looper,不然的话还是会抛错误。
标签:
原文地址:http://www.cnblogs.com/wutianlong/p/5455686.html