android - 一个 BroadcastReceiver 可以用于多个 IntentServices 吗?

标签 android broadcastreceiver listener intentservice

通常对于单个 IntentService,您可以在 Activity 的 onCreate() 方法中像这样定义广播接收器监听器(例如)

broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        //get stuff from the intent and do whatever you want  
    }
};

然后你像这样注册接收器(也在 onCreate() 中):

LocalBroadcastManager.getInstance(this)
    .registerReceiver(broadcastReceiver, new IntentFilter("my_intent_service"));

然后使用以下命令启动 IntentService:

Intent intent = new Intent(this, MyIntentService.class);
startService(intent);

在 IntentService 中,您将消息发送回接收者:

Intent broadcastIntent = new Intent("my_intent_service");
broadcastIntent.putExtra("whateverData", whateverData);
LocalBroadcastManager.getInstance(this).sendBroadcast(broadcastIntent);

这会触发前面描述的 onReceive 方法。

然后在 onDestroy 方法中注销接收者:

  LocalBroadcastManager.getInstance(this).unregisterReceiver(broadcastReceiver);

在 list 文件中,您为您的服务添加:

<service
    android:name=".MyIntentService"
    android:exported="false" />

我想在同一个 Activity 中接收来自多个 IntentService 的广播。

每个 IntentService 都需要一个接收器吗?比如,如果我制作 n IntentServices,我是否需要注册 n 接收器,制作 n 监听器,并取消注册 n onDestroy 中的接收器?

最佳答案

用一个BroadcastReceiver过滤多个actions的方法是将它们添加到IntentFilter中:

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("my_intent_service1"); // Action1 to filter
intentFilter.addAction("my_intent_service2"); // Action2 to filter
LocalBroadcastManager.getInstance(this).registerReceiver(mBroadcastReceiver, intentFilter);

在你的BroadcastReceiver中:

private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("my_intent_service1")) {
            // Action 1
        } else if (intent.getAction().equals("my_intent_service2")) {
            // Action 2
        }
    }
};

关于android - 一个 BroadcastReceiver 可以用于多个 IntentServices 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40075354/

相关文章:

android - 从 Android 使用 Google Drive SDK

java - 解析大型 JSON 数据时 Android 中的 JsonReader 异常

java - 如何在 HashMap 中添加带有地址的图像?

android - 从单独的广播接收器更新 Activity ,如何?

java - Leap Motion Listener onFrame 正在跳过/忽略代码

flutter - PageController忽略监听器

android - 方向更改后 Recyclerview 未填充数据

安卓 map 框 : How to unregister IntentReceiver?

android - RecyclerView - 当 View 不再可见时回调

android - 安装 Receiver 的 onReceiver 从未被调用