对HandlerThread的理解

 分类:Android, Java 阅读 (1,924)  1 Response »
2月 202017
 

1.什么场景下需要使用HandlerThread

1). 比较耗时,不易于放在主线程中执行的操作(不考虑第2点使用其他线程方式也可以)

2). 有多个耗时操作需要后台执行(如果不嫌麻烦也可以考虑使用多个TThread)

2.HandlerThread的使用步骤

1). 创建HandlerThread对象

2). 执行start方法,启动HandlerThread的Looper循环

3). 在主线程中创建Handler对象并引用HandlerTherad的looper

4). 在Handler对象中加入各种消息的处理

5). 在需要的时候给步骤3创建的Handler对象发送消息

6). 不再需要HandlerThread的时候调用quit或者quitSafely停止HandlerThread

示例代码如下(没做各种错误处理,仅供参考):

测试时多次点击Download1和Download2按钮,handler对象就会按点击的顺序多次下载网页baid.com和bcoder.com

3. 要不要像Thread那样写一个HandlerThread的子类?

完全没有必要,因为真正程序执行部分都在handler的消息处理里

4. quit和quitSafely的区别?

 

5. HandlerThread的其它特点

1). HandlerThread中的多个操作是串行按序执行的,即任务1\任务2\任务3....,所以如果你想尽早的获得运行结果,不建议使用HandlerThread这种方式

6. 测试代码下载

LocaleTest