を閉じたときにAsyncTaskを維持する方法:ユーザーが私の主な活動にはこれがあるアプリ
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
moveTaskToBack(true);
System.exit(0);
}
私は、ユーザーがアプリを閉じた後AsyncTask
をバックグラウンドで私のサーバーに入れたデータを続けていきたいです。
を閉じたときにAsyncTaskを維持する方法:ユーザーが私の主な活動にはこれがあるアプリ
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
moveTaskToBack(true);
System.exit(0);
}
私は、ユーザーがアプリを閉じた後AsyncTask
をバックグラウンドで私のサーバーに入れたデータを続けていきたいです。
ユーザーがアプリケーションを閉じた後に、AsyncTaskでバックグラウンドでサーバーにデータを保存します。
AsyncTask
の目的はActivity
のライフサイクルの範囲を超えてありますバックグラウンドタスクを実行するためにではありません。バックグラウンドスレッドがスレッドプールから割り当てられると、タスクが終了するとバックグラウンドスレッドがそれを返すことが期待されます。つまり、必要な時間が不定のAsyncTask
は使用できません。
あなたはをお探しですか?は、Servicesです。
私たちにサービスがある場合は、なぜAsyncTaskを使用するのですか?
まあ、たとえばあなたがButton
のクリックでActivity
からの画像/曲をダウンロードするために必要とするか、またはあなたがその実行を完了するためにいくつかの時間がかかるタスクを実行する必要があると言います。メインスレッド(別名UIスレッド)からこれらのタスクを実行することは悪いアプローチであり、アプリケーションが遅くなり、最終的にはANRになる可能性があります。したがって、これらのタスクは別のスレッドから非同期に処理され、アプリのバタフライをスムーズに保ちます。
あなたが
サービスは、ソリューションの一部であるサービスまたは/およびIntentServicesをチェックする必要がありますが、サービスがフォアグラウンドスレッド上で実行されることに注意してください。 AsyncTaskをサービスから実行して、バックグラウンドスレッドでの実行を継続したい場合があります。
個人的に、私はJobSchedulerの賛成でサービスを利用してに対するをお勧めしたり、API 21以下のデバイスをサポートする必要がある場合は、EvernoteののJobManager(も少し簡単であるが使用します)。これらは、バッテリの使用を最小限に抑えるため、またはデバイスがアイドル状態のときに、適切なタイミングでバックグラウンド操作をスケジュールするのに役立ちます。デバイスのリソースを使用するときは、良い市民であることが重要です。
サービスに精通している必要があります。 –
重複 - http://stackoverflow.com/questions/39507506/how-to-execute-background-task-when-android-app-is-closed-set-to-backgroundそして、http://stackoverflow.com/questions/39507506/how-to-execute-background-task-when-android-app-is-closed-set-to-background –
サービスでそれに慣れてください。 –