0

AndroidクラスServiceを拡張するAudioServiceというサービスがあります。さらに、アプリには5つのアクティビティがあります。1つのサービスをこれらのアクティビティのうち3つだけにバインドするにはどうすればよいですか?

私が興味を持っているのは、ユーザーがこれら3つのアクティビティのいずれかを表示しているときにサービスを実行する機能ですが、他のアクティビティを表示すると、サービスはシャットダウンされます。

たとえば、ユーザーがボタンをクリックしてこれら3つのアクティビティのいずれかに入ると、サービスが開始されます。その時点でMediaplayerオブジェクトを開始できます。他のナビゲーションボタンまたは戻るボタンをクリックすることができ、これら3つのアクティビティのいずれかを表示している限り、音楽は途切れることなく再生され続けます。

4

1 に答える 1

0

共有アトミック変数を使用して、状態をサービスと通信します。これにより、音楽の再生を停止/開始できます。

  1. サービスで静的な AtomicBoolean を宣言し、このブール値の値を設定または取得できる静的メソッドを宣言します。これは、音楽がすでに再生されているかどうかを追跡する必要があります。true に設定すると、音楽が再生されます。

  2. ユーザーがアクティビティに移動するボタンをクリックすると、そのアクティビティの onStart() メソッドを使用して、このブール値の値を確認します。false の場合、音楽は再生されていません。true に設定します。これを true に設定するメソッドも、音楽の再生を開始する必要があります。

  3. 他の 2 つのアクティビティの onStart() メソッドで、AtomicBoolean の値を false に設定します。サービスのメソッドは、AtomicBoolean を false に設定し、メディア プレーヤーを解放する必要があります。

バックグラウンド サービス自体は実行し続けることができます。音楽を再開したい場合は、メディアプレーヤーを再構築するだけです。

于 2012-10-19T07:08:17.753 に答える