Android で最も「死ににくい」コンポーネントは何ですか?
-
26-09-2019 - |
質問
アクティビティから呼び出される AsyncTasks のディスパッチャーとして最適なクラスを探しています。
次のいずれかである可能性があると思います。
- のサブクラス 応用;
- のサブクラス サービス;
- 私自身の 静的 もの。
私にとっては、3 番目の選択肢を実装する方が簡単です。しかし問題は、サービスやアプリケーションよりも「耐死性」が高いかどうかです。また、アプリケーションとサービスのどちらが長生きするのかも非常に興味深いです。私の推測では、アプリ (Android で言えばタスク) プロセスが存続している限り、アプリケーションは存続すると思います。
したがって、私は最も「静的」なものに依存したいため、基本的には「耐死性」の品質によってこれらのオプションの範囲を決める必要があります。
アップデート:
もともと質問は 2010, 、(1) Android は開発者にとって新しいプラットフォームであり、(2) Google のドキュメントはアプリのコンポーネントのライフサイクルとアプリのプロセスのライフサイクル全体に関して曖昧すぎた (場合によっては誤解を招くものでさえあった) とき。
解決
あなたは間違いなくサービスを使用する必要があります。
は、この背後にある主な理由 - Service
は、それ自身の文書のライフサイクルを持っているの、アプリケーションはそうではありません。 Application
インスタンスは、静的変数のいずれかの、ほぼすべての時間にシステムによって死滅させることができるように、あなたは、任意のコールバックを受けないであろうと、このプロセスを停止することはできません。だから、未保存のデータ(すべての静的変数)は失われます。
一方、Service
は静かに、少なくともonDestroy()
メソッドが最初に呼び出さなければならないシステムによって死滅することはできません。そのようなコールバックは、あなたが(などSharedPreferences、ファイル、データベース、のように)いくつかの持続性メモリへのあなたの状態を保存し、次回その状態を復元することができたあなたのアプリケーションまたはサービスが開始されます。