我确信我的问题的解决方案将是那些“duh”时刻之一,但我被困住了,所以任何有用的提示都会被感激地收到。
问题:我有一个带有后台线程的 UI。UI 有一个启动/停止按钮,用于启动和停止线程中的进程。这是使用从 UI 到包裹在循环器中的线程中的消息处理程序的消息来实现的。线程进程处于依赖于线程消息处理程序设置的布尔值 true/false 的 while 循环中。但是,一旦开始,就不会再处理任何消息,并且循环会无限继续。
private class MyThread extends Thread{
public void run() {
Looper.prepare();
MyThreadChildHandler = new Handler() {
public void handleMessage(Message msg) {
switch(msg.arg1) {
case START:
boolLoop = true;
doWhileLoop();
case STOP:
boolLoop = false;
}
};
Looper.loop();
}
private void doWhileLoop(){
while (boolLoop = true){
stuff.do
}
finish.do
}
}
我在 UI 的 STOP 消息上收到了一条 logcat 消息,并且正在触发,但是线程永远不会拾取它,因为它卡在 while 循环中并且消息处理程序没有得到查看。
有没有办法让线程处理程序在各个点检查来自 while 循环内的消息?或者是否有另一种方法可以根据来自 UI 的消息来启动和停止基于线程的连续 while 循环?
干杯安迪