対応するサービスもある Android アプリ (アクティビティ) があります。サービスはアクティビティによって開始され、アクティビティが停止しても継続的に実行されるはずです。アクティビティが再び開始されると、サービスにバインドしてクエリを実行できます。
アクティビティが OS によって破棄され、作成されることがあります。これは物事に影響を与えるべきではなく、アクティビティが再作成され、サービスに再びバインドできるようになるはずです。これは基本的に機能します。
でも...
Dalvik VM ヒープとネイティブ ヒープの両方が圧縮されていないため、アクティビティがメモリ不足になり、クラッシュするまでサイズが絶えず増加することがわかりました (合計メモリ使用量は実際には一定であり、リークしていません)。作成プロセス中に多くの割り当てが行われるため、アクティビティを破棄して再作成すると、これはさらに悪化します。
これにより、何度か再起動した後にアクティビティがクラッシュすることがほぼ保証されます。これはそれほど気になりませんが、同じアプリケーションの一部であるため、サービスもクラッシュします。サービスには、クラッシュ中に失われる重要なデータが含まれています。
この問題を解決する方法についての提案に興味がありますか?
サービスをアクティビティから分離する方法はありますか (アクティビティがクラッシュしたときにサービスもクラッシュしないように)、サービスとアクティビティを同じアプリケーション内に保持する方法はありますか?
サービス データを永続化することはできますが、これには DB へのアクセスが多く必要になり、バッテリーの節約にはつながりません。