簡単な質問があります。以前に終了したスレッドの Looper を再起動 (re-loop()) することはできますか。たとえば、次のようにスレッドを設計しました。
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)...");
}
}
私はこのコードを試しましたが、2回目にハンドラーにメッセージを投稿しようとするとRuntimeException
(デッドスレッドのハンドラーにメッセージを送信するhandleMessage()
)を取得します(2回目以降は呼び出されませんloop()
)。が呼び出されたときgetLooper().quit()
に呼び出すloop()
ことはできますが、新しいメッセージを処理することはできません。それ以外の場合は例外がスローされます)。それが正しいか?
これを行うには、wait()/notify() を使用する必要がありますか??