asyctask のサブクラスを使用して、バックエンド サーバーとサーバー同期を行うアクティビティがあります。
これはネットワーク タスクであり、数秒かかる場合があります。次のシナリオが起こることを恐れています。
アクティビティが開始され、asynctask が実行を開始する必要があるときはいつでも実行されます。onPreexecute() が呼び出され、実行され、終了します。ただし、doInBackground() が呼び出されて実行されますが、メソッドが実行されているときに、ユーザーはホーム ボタンを押して最近のアプリからアプリをスワイプします。(もちろん、これによりアプリが終了し、すべての onDestroy メソッドが生きているアクティビティから呼び出されます..(これについて間違っている場合は訂正してください))。
私の onPostExecute() メソッドでは、データを DB に挿入し、ビューを更新しています。ただし、アプリが「終了」しているため、onPostExecute() メソッドは実行されません。
私の質問は次のとおりです。
- ユーザーがホームボタンを押してアプリから出てアプリをスワイプすると、その瞬間に doInBackground が停止しますか? つまり、途中でカットされ、それが何を続けていないのですか?
- サーバーから取得して DB 内に配置しようとしていたデータはどうなりますか? doInBackground 内のデータベースにデータを配置することをお勧めしますか?