このトピックに関連するほとんどすべての質問を読みましたが、スレッドを「終了」するまではすべて完璧です。
public class LooperThread implements Runnable {
Handler UI_Handler;
IncomingHandler handler;
public LooperThread(Handler ui_handler)
{
UI_Handler = ui_handler;
handler = new IncomingHandler(this);
}
public Handler getHandler() {
return handler;
}
public void handleMessage(Message msg)
{
int wht = msg.what;
wht++;
UI_Handler.obtainMessage(wht).sendToTarget();
if (wht == 4)
Looper.myLooper().quit();
}
@Override
public void run() {
Looper.prepare();
Looper.loop();
}
static class IncomingHandler extends Handler {
private final WeakReference<LooperThread> mService;
IncomingHandler(LooperThread lprThread) {
mService = new WeakReference<>(lprThread);
}
@Override
public void handleMessage(Message msg)
{
LooperThread service = mService.get();
if (service != null) {
service.handleMessage(msg);
}
}
}
}
これが私が試したコードです。そして、「メインスレッドは終了できません」というメッセージが表示されます。条件が満たされた時点でスレッドを終了したいだけです。