2011-06-24 9 views
1

私は、アプリケーションを終了するときにループを停止するループを実行するAsyncTaskを持っており、グローバルな「停止」ブール値が設定され、ループを停止してAsyncTaskを終了します。Android AsyncTaskを終了する

私はこのコードを持っている:今ここ

@Override 
public void onBackPressed() 
{ 
    KillAllThreads(); 
} 

@Override 
public void onUserLeaveHint() 
{  
    KillAllThreads();  
} 

事です。 AsyncTaskを開始すると、onUserLeaveHint()がすぐに呼び出され、ホームボタンが押されると、このメソッドは実行されません。 AsyncTaskを開始せずに何もせずにアクティビティをロードさせると、Homeを押すとonUserLeaveHint()メソッドが起動します。

ユーザーがアプリをクリックするとスレッドを停止する方法を教えてください。

答えて

2

AsyncTaskで.cancel()を呼び出すことができるはずですか?これは、実行中のタスクをキャンセルする方法を示し

  • など、タスク、出版進捗を開始

    • は、それはAsyncTaskの重要な側面を示して、私のGoogleドキュメント上でこのサンプルプロジェクトを見てください。

    • アクティビティが一時停止または停止しているときに実行中のタスクをキャンセルする方法を示します。

    リンク:

    https://docs.google.com/leaf?id=0BwAnjRVwT4WzOWMwYjFhNTctOTUxYy00NjQwLTgwNWEtMmE5MzEyZWQ3NjUx&hl=en_US&authkey=CLnH8_ID

  • +0

    コール.cancelから?私はonStop()でmyTask.cancel(true)を呼び出すことも試みました。ちょうどクラッシュします。 – Jesse

    +0

    cancel(false)を呼び出すと、falseは進行中のタスクが完了することを意味し、これによりonPostExecute(...)が呼び出されないことが保証されます。タスクを終了するには、doInBackground(...)から定期的にisCancelled()によって返された値をチェックする必要があります。基本的には、cancelを呼び出すと、isCancelled()がtrueであることを意味するので、if(isCancelled())break;という行を追加します。 doInBackground()メソッドに追加します。 – Kenny

    +0

    がonStopで試したところ、myTask.cancel(false);すぐにクラッシュする – Jesse

    関連する問題