0

わかりました。このアプリケーションはWebサービスに定期的に更新を送信する必要があります。かなりの量の調査を行い、2つのサービス実装パターンを考え出しました。

  1. スレッドを使用してサービスを実装します。定期的な更新時間は異なる場合があるため、必要な時間間隔でスレッドをスリープ状態にしてから、Webサービスを再度呼び出します。また、アクティビティを更新する必要があるため、ブロードキャストレシーバーまたはメッセンジャーを使用します。

  2. スケジュールタイマー/アラームマネージャーでサービスを使用し、システムをウェイクアップし、ブロードキャストレシーバーと組み合わせてインテントサービスを使用します。

どちらが最善のアプローチでしょうか?

4

2 に答える 2

2

#2のオプションを使用すると思います:

  1. を作成IntentServiceして更新を行います。
  2. (s) でaBroadcastReceiverを登録し、そこから を開始します。IntentFilterIntentService
  3. 必要な時間間隔で登録されたアクションに使用AlarmManagerします。Broadcast

私がこの方法を好む理由:

  1. これは非常に柔軟なパターンです。ネットワーク接続の変更、システムの起動の変更など、さまざまなアクションに対して同じレシーバーを登録することで、いつでもサービスを開始できます。
  2. これにより、ロジックがアプリの他の部分から疎結合されます。
  3. 面倒なスレッド管理はありません。を使えば無料で手に入るIntentService
  4. この問題を解決するのは、よりアンドロイドっぽい方法です。
于 2012-09-26T20:35:18.693 に答える
0

主な違いは、ユーザーがバックグラウンドサービスをシャットダウンすると、それ以上更新を取得できないことです。イベントをAlarmManagerに登録すると、これらのイベントがいつ発生するか、または発生するかどうかを制御できます。ユーザーがアプリをシャットダウンしてタスクマネージャーにアクセスし、アプリに関連する実行中のサービスをシャットダウンした場合でも、AlarmManagerはウェイクアップして、BroadcastReceiverが受信するメッセージを送信します。

于 2012-09-26T20:32:33.790 に答える