0

サービス アーキテクチャを深く掘り下げようとしています。
テスト目的で、音楽アプリを作成しています。
間違いなくサービスで音楽を再生する必要がありますが、どのようなコミュニケーションを使用するのでしょうか? 私が知る限り、サービスはバインドまたは開始できます (または両方を同時に)

まず、ソースを再生/停止/一時停止/設定する必要があります...
次に、音楽プレーヤーが開いている場合、進行状況、バッファリングなどのイベントについて UI に通知する必要があります...

これについての私の考えはここにあります。
バウンドサービスとスターテッドサービスを混在させることを考えています。

曲は UI からしか設定できず、一時停止/再生/停止/シークも可能な限り、バインダーを使用して UI からサービスとの通信を選択します。(アクティビティ内でサービスをバインドし、バインダーを元に戻してサービスと通信します)

サービスからのトラック完了、次のトラック、現在のトラック位置などの通知。Broadcast receiver複数の関心のあるコンポーネントである可能性があるため、このような通知を送信するために を使用することにしました。

だから私の質問は

  1. 音楽プレーヤー サービスの通信 (バウンドまたはブロードキャスト) の最適な選択は何ですか?
  2. システムは、サービスの種類をどのように認識しますか? つまり、サービスが最初にメソッドboundを呼び出してバインドする必要がある場合でも、それをバインドする必要があります。startServiceメソッドが1つでもbindService呼び出された場合、それはバインドされたサービスと見なされ、メソッドが呼び出されると強制終了されるということunbindですか?
  3. LocalBroadcastManagerサービスとの通信に意味がありますか? LocalBroadcastManagerアプリごとにローカルである限り、バインドされたサービスを使用しないのはなぜですか? 他のアプリがイベントに関心がある場合、グローバル ブロードキャストは理にかなっています。

このメカニズムを理解するのを手伝ってください。

4

2 に答える 2