2

アクティビティから呼び出される AsyncTasks のディスパッチャーとして最適なクラスを探しています。

次のいずれかになると思います。

  1. Applicationのサブクラス。
  2. Serviceのサブクラス。
  3. 私自身の静的なもの。

私にとっては、3番目の選択肢を実装する方が簡単です。しかし問題は、サービスやアプリケーションよりも「死に強い」かどうかです。また、アプリケーションとサービスのどちらが長生きするかは非常に興味深いことです。私の推測では、アプリ (Android の観点からはタスク) プロセスが存続する限り、アプリケーションは存続します。

したがって、基本的には、最も「静的な」ものに依存したいので、「死に強い」品質によってこれらのオプションを分類する必要があります。

アップデート:

当初、この質問は2010 年に (1) Android が開発者にとって新しいプラットフォームであり、(2) Google のドキュメントがアプリ コンポーネントのライフサイクルとアプリ プロセスのライフサイクル全体についてあまりにも曖昧であった (場合によっては誤解を招くものでさえあった) ときに尋ねられました。 .

4

1 に答える 1

4

必ずServiceを使用する必要があります。

この背後にある主な理由Serviceは、独自の文書化されたライフサイクルがありますが、アプリケーションにはありません。Applicationインスタンスは、静的変数と同様に、ほぼいつでもシステムによって強制終了される可能性があり、コールバックを受信せず、このプロセスを停止できません。そのため、保存されていないデータ (すべての静的変数) は失われます。

一方、Serviceシステムによってサイレントに強制終了することはできません。少なくともonDestroy()メソッドを最初に呼び出す必要があります。このようなコールバックを使用すると、状態を永続的なメモリ (SharedPreferences、ファイル、データベースなど) に保存し、次にアプリケーションまたはサービスを開始したときにその状態を復元できます。

于 2012-09-28T13:02:23.973 に答える