BroadcastReceiver 如何与 Service 通信

How BroadcastReceiver can communicate with Service

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

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

问:"BroadCastReciver + binder"

A:"No, it is bad idea."(没有举例说明如何在没有binder的情况下与服务通信)

解决方案 - 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);