2016-05-10 8 views
-1

私はasynctasksについて疑問を持っています。私のアプリケーションでは、私は2つのアクティビティを持っています。最初のアクティビティはデータを受け取る非同期タスクであり、2番目のアクティビティではデータを受け取るためのasynctaskもありますが、データを送信する別の非同期タスクもあります。問題は次のとおりです。2番目のアクティビティに移動してデータを送信すると、2番目のアクティビティの非同期タスクがそのデータを受け取るようにしたいのですが、受け取っている最初のアクティビティからの非同期タスクです。Android - アクティビティ間の非同期タスクを終了

誰かが、あるアクティビティから別のアクティビティに変更するときに、非同期タスクを殺す方法を見つけるのを助けることができますか?

答えて

0

runnningコードの例です。私の場合、loadAppsという非同期タスクオブジェクトがあるとしましょう。あなたが活動を切り替えると、呼び出し:

if (loadApps != null && loadApps.getStatus() == AsyncTask.Status.RUNNING) { 
     loadApps.cancel(true);    
    } 

そして、doInBackgroundメソッドであなたの非同期タスククラスで使用すると、ブールisCanceled(のために(先頭または反復間のループがある場合)、いくつかの点でチェックする必要がある)を

+0

お返事ありがとうございました。もう一つの疑問は、isCanceled()をチェックした後、返されるものです。あなたは例を挙げることができます –

+0

私の場合はループを壊します。あなたの場合..あなたは何かを返す方法を見つける必要があります(結果になるものは何でも... ifはboolean ... falseを返します.. ifがvoid ... jut return)。一度isCanceledがtrueになると、タスクはonPostExecuteメソッドを呼び出さないことを覚えておくことが最も重要です。 onCancelledメソッドが呼び出されます。そこにあなたのロジックを実装してください。リスナーをお持ちの場合は、そこから通知してください...進捗ダイアログをキャンセルする必要がある場合は、そこから実行してください。これはUIコールバックです。したがって、onPostExecuteメソッドのようにUI要素を操作できます。 – daxgirl

+0

大丈夫、ありがとう。 –

関連する問題