-2

こんにちはメイト私はフラグ割り込みがオンになっているときに終了したい単純なスレッドを持っています。これは、実行メソッドの開始時のコードです

conn = false;
for (int i=0; (isInterrupted() == false) && (i < TRY_CONNECT) && !conn; i++) {
    try{
        Log.d(TAG,"TRY"+i);
        sock.connect();
        conn = true;
    } catch (IOException e) {
        try {
            sleep(5000);
        } catch (InterruptedException e1) {
            Log.d(TAG,"CATCH int");
            break;
        }
    }
}
if(isInterruped() == true)
    Log.d(TAG,"INT");

私が彼に割り込みメソッドを呼び出すスレッドを出します、そしてそれはループを終了しません..彼は私が呼び出す割り込みを見ません...どうして可能ですか?デバッグの場合:割り込みを呼び出す場所から、log cat ... thread_reader.interrupt();を使用して2つの印刷を挿入します。boolean b = thread_reader.isInterrupted(); Log.d(TAG、 "" + b); そしてlogcatで、システムは「false」を出力します。どうすれば可能ですか?割り込みを呼び出しただけです

4

2 に答える 2

1

をキャッチしたらInterruptedException、単純にループを中断します。がスローisInterrupted()されると中断フラグがクリアされるため、ループ ヘッダーのチェックに依存しないでください。InterruptedException

于 2012-09-08T18:08:35.510 に答える