フラグメントから onDestroy() から長い操作タスクを実行したい。私の目標は、ユーザーが最近のアプリからスワイプしてアプリケーションを閉じた場合に備えて、ネットワーク呼び出しを呼び出して一部のデータを削除することです。onDestroy() が呼び出されたときにインテントを開始したいと考えています。
現時点では、インテントを開始しようとするたびに、onDestroy() が既にアプリケーションを強制終了しているため、呼び出しを操作する前にコンテキストが失われます。
私はこのオプションを使用したくありません: onDestroy で長時間実行する操作を実行するのは、そのようにスレッドを実行するのは正しい方法ではなく、危険なハックのように思えます。
アクティビティの onDestroy() から操作を呼び出すと、同じエラーが発生しました。
もちろん、操作が完了するまで、UIスレッドで作業をしたり、 onDestroy() を「延期」したりしたくありません。
クリアランスのために、getContext() は null ではありませんが、インテントの送信は非同期操作であるため、SomeService クラスに到達するまでに、コンテキストは既に null です。
@Override
public void onDestroy() {
Intent intent = new Intent(getContext(), SomeService.class);
getContext().startService(intent);
super.onDestroy();
}