【问题标题】:How BroadcastReceiver can communicate with ServiceBroadcastReceiver 如何与 Service 通信
【发布时间】:2019-05-03 22:02:27
【问题描述】:

BroadCastReciever 如何在不绑定的情况下与服务通信?

我认为在 BroadCastReceiver 中使用 binder 是个好主意,但在阅读了一些信息后,我明白这不是一个好主意。 我试图在 stackoverflow 中找到问题,但我发现的只是:

问:“BroadCastReciver + binder”

A:“不,这是个坏主意。”(没有举例说明如何在没有 binder 的情况下与服务通信)

【问题讨论】:

    标签: android broadcastreceiver android-mediaplayer


    【解决方案1】:

    解决方案 - LocalBroadcastManager。 感谢 LocalBroadcastManager,我们可以在应用的不同部分之间发送广播。

    SEND_BROADCAST

    LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(context);
            IntentFilter filter = new IntentFilter("com.onezero.EXAMPLE_ACTION");
            localBroadcastManager.registerReceiver(new BroadcastReceiver() {
                @Override
                public void onReceive(Context context, Intent intent) {
                    Toast.makeText(context, "=(", Toast.LENGTH_SHORT).show();
                }
            }, filter);
    
            Intent sintent = new Intent("com.onezero.EXAMPLE_ACTION");
    
    
            localBroadcastManager.sendBroadcast(sintent);
    
    

    接收广播

    LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
            IntentFilter filter = new IntentFilter("com.onezero.EXAMPLE_ACTION");
            localBroadcastManager.registerReceiver(new BroadcastReceiver() {
                @Override
                public void onReceive(Context context, Intent intent) {
                    // DO WORK
                    setPlayPause(); //PAUSE MEDIAPLAYER IN MY CASE
                }
            }, filter);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      相关资源
      最近更新 更多