我想要一个工作线程,它可以 1)向 UI 线程发送消息以更改 GUI 中的内容,以及 2)从 UI 线程接收消息以控制工作线程的行为。
第一部分很简单:在 UI 线程中创建一个 Handler,让工作线程向它发送消息。奇迹般有效。工作线程使用 Thread.sleep() 执行有效的延迟,唤醒“做事”,向 UI 线程的 Handler 发送更新,然后重复。
下一部分在 Android 中显然是困难的。工作线程必须有一个 Looper 才能创建一个 Handler 以便它可以接收消息,并且 Looper.loop() 是一个阻塞调用,这意味着工作线程现在 100% 致力于运行 Looper 并且不能做其他事情当前正在做(“做事”,发送更新消息,睡眠,重复)。
这意味着我需要一个第三个线程来为工作线程运行 Looper,这很荒谬。应该可以让工作线程做有用的事情,并在消息到达时处理消息。这产生了一个具有最少线程对象和最小开销的高效系统。我不知道如何在 Android 中实现这种行为。
那么......工作线程如何支持处理程序并做其他有用的事情?谢谢!