2

単純なシングルトンクラスではなく、サービスを使用してバックグラウンドタスクを実行することの利点を正確に理解するために多くの時間を費やした後、私が見つけた唯一の具体的な答えは、開始されたサービスの単なる存在がシステムが私のプロセスを殺す可能性は低くなります。

この場合、サービスを開始および停止する以外に、サービスの機能を実際に使用して、特定の時間にプロセスを強制終了したくないことを通知する理由は何ですか?サービスへのバインドなどの煩わしさを処理するのではなく、ダミーサービスを適切に開始および停止する「setPleaseDontKillMyProcessIfYouCanHelpIt(boolean)」メソッドと組み合わせて単純なシングルトンを使用してみませんか?繰り返しますが、私はプロセス間通信を使用していないので、機能はここでは考慮されません。

ユーザーがここで同様の質問をしていることは承知していますが、正解は得られません。開始されたサービスがシステムによるアプリの強制終了を思いとどまらせるという事実の繰り返し(および「サービスを正しく使用する」という提案)だけです。 「シングルトンやダミーサービスを使用するのではなく、理由はわかりません)。

回答をよろしくお願いします。StackOverflowを使用するのはこれが初めてなので、エチケットのルールに違反した場合はお知らせください。

4

2 に答える 2

1

私もこれを理解しようとしていました。考慮すべき点がいくつかあります。サービス:

  • インテントを使用して疎結合を行うことができます (アクティビティとサービス間の通信プロセス全体をインテントのみに制限できます)
  • BroadcastReceivers によって転送されたインテントを処理できます (例: TIMEZONE_CHANGED)
  • 時間がかかる場合は、操作をメインスレッドから移動できます
  • アプリケーションのライフサイクルを認識することができます - サービスは作成時または停止時にコールバックを取得します

サービスは、GUI のないアクティビティと考えてください。これはライフサイクル管理オブジェクトでもあり、Singleton にアクセスできます。

于 2012-08-02T16:55:30.927 に答える
0

違いは、通常の状況では Service が Android によって強制終了されないことです。Service がある場合、シングルトン クラスが強制終了される可能性は低くなりますが、別のアプリがスペースを要求すると、確実に強制終了されます。サービスを利用したくない理由は何ですか?

于 2012-08-02T16:25:06.293 に答える