サービス アーキテクチャを深く掘り下げようとしています。
テスト目的で、音楽アプリを作成しています。
間違いなくサービスで音楽を再生する必要がありますが、どのようなコミュニケーションを使用するのでしょうか? 私が知る限り、サービスはバインドまたは開始できます (または両方を同時に)
まず、ソースを再生/停止/一時停止/設定する必要があります...
次に、音楽プレーヤーが開いている場合、進行状況、バッファリングなどのイベントについて UI に通知する必要があります...
これについての私の考えはここにあります。
バウンドサービスとスターテッドサービスを混在させることを考えています。
曲は UI からしか設定できず、一時停止/再生/停止/シークも可能な限り、バインダーを使用して UI からサービスとの通信を選択します。(アクティビティ内でサービスをバインドし、バインダーを元に戻してサービスと通信します)
サービスからのトラック完了、次のトラック、現在のトラック位置などの通知。Broadcast receiver
複数の関心のあるコンポーネントである可能性があるため、このような通知を送信するために を使用することにしました。
だから私の質問は
- 音楽プレーヤー サービスの通信 (バウンドまたはブロードキャスト) の最適な選択は何ですか?
- システムは、サービスの種類をどのように認識しますか? つまり、サービスが最初にメソッド
bound
を呼び出してバインドする必要がある場合でも、それをバインドする必要があります。startService
メソッドが1つでもbindService
呼び出された場合、それはバインドされたサービスと見なされ、メソッドが呼び出されると強制終了されるということunbind
ですか? LocalBroadcastManager
サービスとの通信に意味がありますか?LocalBroadcastManager
アプリごとにローカルである限り、バインドされたサービスを使用しないのはなぜですか? 他のアプリがイベントに関心がある場合、グローバル ブロードキャストは理にかなっています。
このメカニズムを理解するのを手伝ってください。