【问题标题】: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);