2010-11-28 7 views
4

サービスを構築する方法の例がいくつか見つかりますが、アクティビティとサービスの間でメッセージを送信する方法の実際の例を見つけるのは難しいです。私が見つけることのできるところからは、インテント、AIDLを使用するか、this questionのようにサービスオブジェクト自体を使用するという選択肢があると思います。Androidのサービス間のコミュニケーションのパフォーマンス

私の場合、自分のアクティビティだけがサービスにアクセスする唯一のアクティビティなので、ローカルサービスが行います。アクティビティが開いているときに、サービスからのステータスメッセージが表示されますが、これは最大20 Hzで行われます。通信方法がサポートする1​​秒あたりのメッセージ数に制限はありますか?基本的には、私の状況にはどの方法が最適でしょうか?

ありがとうございました。

答えて

4

あなたの活動とサービスは同じアプリの一部であるため、AIDLを使用する必要はありません。あなたは単にuse your Service as a local oneかもしれません。

+0

このページのローカルサービスの例は、サービスの作成方法を説明するのに大変役立ちますが、サービスとアクティビティの通信方法は示していません。ローカルメッセンジャーサービスサンプルのショーのようなメッセンジャークラスは、ローカルサービス中に使用できますか? –

+1

更新:ローカルサービスでメッセージングが正常に動作するように見えます。 –

+0

あなたはアクティビティコミュニケーションへのサービスを説明しません – Atma

1

この制限は、デバイスのパフォーマンスの影響を受けます。 1秒あたりのリクエストに上限はありません。 通常、(他の部分と比較して)非常に多くのCPUを使用するコンテキストスイッチがありますが、ローカルサービスを使用しているので、それに悩まされることはありません。いずれにせよ、20Hzは問題ではありません。 あなたにとって最適な解決策は、AIDLを使用し、サービスがステータスを報告するためにコールできるコールバックを設定することです。

これがAPIDemosでどのように行われるかの良い例があります。

関連する問題