2010-11-19 17 views
2

スレッドを安全に停止するにはどうすればよいですか?スレッドを安全にアンドロイドで停止するには?

downloadThread = new Thread(new Runnable() { 

    @Override 
    public void run() { 

    }); 
    downloadThread.start(); 
} 
+0

... – dalle

+1

これは、このような頻繁に良い答えと頻繁に質問です:[Javaで迅速かつクリーンな方法でスレッドを中止する方法](のhttp://のstackoverflow。 com/questions/94011/how-to-abort-a-thread-in-a-fast-and-clean-in-java) –

答えて

0

最も簡単な設定はisRunningをfalseに設定しているようです。

+0

私は一般的な解決策が必要です。 – Srinivas

+0

同様のソリューションは、私が複数回雇いました。 while(do_run()){do stuff} – dutt

3

あなたがAndroid SDKのAsyncTaskを使用する場合、通常のスレッドを使用してバックグラウンドジョブを実行する代わりに、cancel()を見つけることができます。

+26

これは質問に答えていません。 – Trevor

3

スレッドを中断します。スレッドのrun()メソッドでは、異なる論理ブロックの末尾にあるisInterrupted()の値を確認してください。

例えば、あなたのrun()メソッドは、3つの論理的なステップに分割することができます - ネットワーク接続を作成し、イメージをダウンロードしてイメージをファイルに保存します。これらの各ステップの最後に、isCancelled()をチェックし、その時点ですべての状態を破棄する操作を停止します。

も、コンパイルされません
class NetworkFetcherTask extends AsyncTask<String, Void, Void>{ 
    public void doInBackground(String... params){ 
     String url = params[0]; 

     //Open connection if not cancelled 
     if(isCancelled()){ 
      conn.close(); 
      return; 
     } 
     NetworkConnection conn = new NetworkConnection(); 


     //Download the image if not cancelled 
     if(isCancelled()){ 
      conn.close(); 
      result.discard(); 
      return; 
     } 
     NetworkResult result = conn.fetchUrl(url); 
     conn.close(); 

     //Save the image to a file if not cancelled 
     if(isCancelled()){ 
      result.discard(); 
      return; 
     } 
     File file = new File(); 
     file.dump(result); 
    } 
} 
+0

Wohoo!古い質問!決して実現しません –

+0

あなたは何を提案するか、いくつかの例を挙げることができますか? –

+0

あなたは行き​​ます。 isInterrupted()からisCancelled()への変更に注意してください。 isInterrupted()は、スレッド上のメソッドであり、AsyncTaskではありません。謝罪いたします。 –

関連する問題