4

Android では、一般に、UI スレッドでデータベース操作 (または少なくとも複雑な操作) を実行しないことをお勧めします。複雑なフォームのアクティビティがあり、アクティビティがバックグラウンドに移行したとき (ユーザーがホーム ボタンを押したときや電話がかかってきたときなど) にすべてのデータが確実に保存されるようにしたいと考えています。アクティビティの onPause() メソッドで、データをデータベースに保存する AsyncTask を開始できますが、アクティビティとアプリ全体がバックグラウンドにあるため、タスクが終了する前に Android がプロセスを強制終了できるため、タスクが正常に終了することを確認できません。 .

onPause メソッドでデータ同期を保存できますが、ANR が発生する可能性があります。
アクティビティが強制終了された後に Android がビューを復元することは知っていますが、これはビュー ID が一意である場合にのみ正しく機能します。非常に複雑なモデルを保存する必要があるため、ID の一意性を保証できず、saveInstanceState 機能を使用することはほとんど不可能な、プログラムで追加されたビューが多数あります。

AndroidがUIスレッドでプロセスを実行せずにプロセスを強制終了する前に、データが確実に保存されるようにする可能性はありますか?

4

5 に答える 5

0

データが保存されていることを確認し、データが保存されたらすぐにサービスと通知をシャットダウンするには、通知を使用してバックグラウンド サービス デーモンを開始する必要があります。バックグラウンド サービスのサービスを表示することが必須であるため、バックグラウンド サービスが実行されるまで通知が表示されます。そうしないと、アプリケーションがクラッシュします。

于 2022-02-17T04:30:55.320 に答える