3

こんにちはメイト私はこのコードのスレッドを持っています

private final class Consumer extends Thread {

    public boolean running;

    public Handler consumerHandler;

    public void run() {
        Looper.prepare();
        consumerHandler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                Log.i(LOG_TAG, "Consumer-> " + msg.obj);
            }
        };
        Looper.loop();

    }

}

私のアクティビティでは、ConsumerタイプのスレッドTを作成し、そのスレッドでstartを呼び出します。アクティビティはどのようにしてスレッドTを停止できますか?

4

3 に答える 3

2

通常、メッセージ ループを実行しても、例外がスローされるか、メソッドが呼び出されない限り、ループは終了quit()しません。DOC を見てください - 必ず quit() を呼び出してループを終了してください

    @Override
    protected void onDestroy() {
      consumerObj.consumerHandler.quit(); 
      super.onDestroy();
    }
于 2012-09-05T12:37:25.480 に答える
0

これを試して

if(Consumer != null) {
   Thread thread = Consumer;
   Consumer = null;
   thread.interrupt();
}

または内部に状態がある

public void run() {
   while(running) {

   }
}

スレッドセットを停止しますrunning = false;

ここを参照してください

于 2012-09-05T12:26:11.503 に答える