0

さまざまなタイミングで複数のリスナーを追加/削除できる NON-IPC サービスの作成に問題があります。それ。このサービスは時々起動し、サブスクライブしているすべてのリスナーにイベントを送信します。

私はstackoverflowの例、グーグルなどを見てきましたが、特にここで似たようなものを見つけました: android restful api

その例では、サービスからのコールバックとして機能するように ResultReceiver を使用することをお勧めします。しかし、このアプローチでは、サービスが最初のインテントの一部として送信されたリスナーにのみ通知できるということではありませんか (つまり、いつでもリスナーを追加/削除することはできません)。

また、その例で、何らかの理由でアクティビティが OS によって破棄されたが、サービスがまだリスナーへの参照を保持していて、それを呼び出そうとするとどうなるでしょうか? リスナーは、もはや存在しないアクティビティに対して何らかのアクションを実行しようとしますよね?

多分私は何かが欠けている...可能であれば、いくつかの入力をいただければ幸いです..

TNX

4

1 に答える 1

1

まず、「スリープ」サービスは Android のアンチパターンです。定期的に何かを行う必要がある場合は、AlarmManager を使用してサービスを開始します。第 2 に、サービスはいつでも再起動できるため、他のコンポーネント (主にアクティビティ) への参照を保持する「サブスクライブ」に頼ることはできません。複数のアクティビティに通知を送信する必要がある場合は、ブロードキャスト レシーバーを使用します。アクティビティは、静的に (AndroidManifest.xml を使用して)、または動的に (コードを使用して) 登録できます。

于 2012-06-21T06:35:05.873 に答える