0

Android SDK によって提供されるサンプル メディア プレーヤーを使用しています。MainActivity は Service MusicService を で開始しstartService(new Intent(MusicService.ACTION_PLAY))ます。

サービス内の ID でビューを検索する必要がありますが、その方法がわかりません。

    findViewById(R.id.playbutton).setVisibility(View.GONE);

同様の質問をいくつか見つけましたが、簡単な解決策を提供するものはありません(最も類似した質問の受け入れられた答えは、実際には「できません」であり、可能であると確信しています)。この行をサービス内で機能させるにはどうすればよいですか? MainActivity からそれにコンテキストを渡す必要がありますか?どうすればよいですか?

4

1 に答える 1

2

サービスはメディアの再生を処理するため、再生/一時停止の前にインターフェイスを直接更新する必要があるため、UI を更新する必要があります。

いいえ、あなたはしません。UI が存在する場合は、UI に状態の変化を知らせる必要があります。UI は、適切と思われる独自の変更に影響を与えます。ユーザーの操作によっては、UI がまったく表示されない場合があります。

影響を受ける UI のビットに状態の変化を知らせるために、次のことができます。

  • 通常のブロードキャストを送信するIntent、または
  • LocalBroadcastManager「ナローキャスト」を送信するために使用しますIntent(ブロードキャストとよく似ていますが、完全にプロセス内にあります)、または
  • Ottoをイベントバスとして使用する
于 2013-01-30T03:55:23.073 に答える