0

このトピックに関連するほとんどすべての質問を読みましたが、スレッドを「終了」するまではすべて完璧です。

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);
            }
        }
    }
}

これが私が試したコードです。そして、「メインスレッドは終了できません」というメッセージが表示されます。条件が満たされた時点でスレッドを終了したいだけです。

4

0 に答える 0