2017-12-27 6 views
-1

私は音楽プレーヤーアプリを開発中です。サービスクラスを使用して、再生、一時停止、次と前のトラックなどの基本機能を追加しました。サービスクラスからブロードキャスト受信者でRecyclerviewを更新するにはどうすればよいですか?

ここでは、ユーザーがクリックする操作(たとえば、再生時にrecyclerviewに選択した要素の画像があるはずです)に従って、自分のrecyclerviewのUIを更新します。

サービスクラスが異なるアクションでブロードキャストするブロードキャストレシーバを使用し、ブロードキャストアクションに従ってrecyclerviewを更新できると考えました。しかし、どうすればそのような機能を追加できますか?

答えて

0

インアクティビティのブロードキャスト受信機が必要です。そのようなレシーバーは、アクティビティーが表示されているときに登録され、非表示になると登録解除されます。

public class MainActivity extends Activity { 

    private final BroadcastReceiver mReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      // Here update your RecyclerView 
     } 
    }; 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     IntentFilter filter = new IntentFilter(YourService.YOUR_CUSTOM_ACTION); 
     registerReceiver(mReceiver, filter); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     unregisterReceiver(mReceiver); 
    } 
} 

そして、あなたのサービスでは、単にブロードキャストを送信:この回答のため

Intent intent = new Intent(YOUR_CUSTOM_ACTION); 
// put extras in the intent as you wish 
sendBroadcast(intent); 
+0

おかげで、私は放送受信機で受信したデータによると、特定の位置でrecyclerviewの内容を更新したいです。例えば。サービスが "再生"ストリングを送る場合、私はrecyclerviewのその位置にイメージを置いておきたいと思います。 –

関連する問題