我有一个简单的问题:如果 (re-loop()) 线程的 Looper 之前退出,是否可以重新启动它。例如,我设计了我的线程如下:
public class ProvaThread extends Thread implements Runnable{
public void run(){
Looper.prepare();
Handler handler = new Handler(){
Log.d(TAG, "handle message..");
@Override
public void handleMessage(Message msg){
getLooper().quit();
}
};
Looper.loop(); //loop 1
Log.d(TAG, "thread continue (1)...");
Looper.loop(); //loop 2
Log.d(TAG, "thread continue (2)...");
}
}
我已经尝试过这段代码,但是当我第二次尝试向处理程序发布消息(第二次之后不调用)时,我得到了一个RuntimeException
(向死线程上的处理程序发送消息)。我得出的结论是,何时调用是否可以召回但无法处理新消息,否则会引发异常)。这是对的吗?handleMessage()
loop()
getLooper().quit()
loop()
我应该使用 wait()/notify() 来做这个吗?