約 10 個以上のアクティビティを含むアプリケーションがあります。
バックエンド サーバーとの同期を実行しようとしています。(私はいくつかのデータを送信し、データベースなどに保存するいくつかのデータを取得します)
アプリが表示されている限り、同期を実行し続けたいです。私の問題は、Android で「私のアプリは現在実行中です」という実際の概念がないことです。また、ユーザーは非常に多くの出口点を持つ可能性があるため、どの onPause/onStop にコードを配置すればよいかを判断するのが難しくなります。(ここで間違っている場合は、訂正して説明してください)。
この同期メカニズムから GUI 関連のものを変更しないことに注意してください。
以下のように要約できるいくつかの解決策が提案されました。
- サービスを実行し、それを各アクティビティにバインドします。サービスに所有者がいる限り実行され、所有者がいない限り停止します。
- 同期には参照カウンターを使用します。同期を実行し、onStart と onStop のそれぞれでカウンターを加算または減算し、カウンターが 0 のときに同期を停止するシングルトン クラスを取得します。
- アプリケーション コンテキストをサブクラス化 (または静的変数を作成) して各アクティビティの状態を確認し、各 onResume および onPause 内でチェックを行い、それに応じて同期を開始/一時停止/停止します。
どのアプローチが推奨され、別のアイデアがある場合は、親切に共有してください。