外观
如何创建一个具有独立 Looper 的子线程?它的典型应用场景是什么?
标准回答
常用 HandlerThread:创建并 start(),用 thread.getLooper() 创建 Handler,再 post 任务;结束时按需求 quitSafely()。若手动创建线程,则在线程中依次 Looper.prepare()、创建 Handler、Looper.loop()。适合需要单线程顺序处理的后台消息。
通俗例子
设备控制指令要求严格顺序,就把它们交给同一个 HandlerThread。组件不再需要时退出线程并处理未完成任务。
深入解释
**HandlerThread 多了什么:**它是一条线程,并在启动后准备 Looper 和消息队列。把 Handler 绑定到它的 Looper,提交的任务就会在这条后台线程顺序执行。
**适合什么任务:**适合需要单线程归属或顺序处理的回调与设备操作。一个任务卡住仍会挡住后面的任务;不再使用时还要退出线程并处理剩余消息。
易混淆点
HandlerThread 不是线程池,不适合直接承担无限并发任务。
参考资料
内容来源
- Android · AI Agent 知识手册 · 原条目
4.1.3