我正在使用新的Android构建系统创建一个应用程序,并使用LocalBroadcastManager
将通知从IntentService
触发回Activity
。
我已将以下产品风格定义为 3 个独立应用构建的一部分;
productFlavours {
london {
packageName 'com.example.lo'
}
dubai {
packageName 'com.example.du'
}
}
当我使用这些产品风格中的任何一种构建应用程序时,我不会通过管理器获得任何广播。我已确认服务和活动在同一进程中运行。
广播接收器在我的活动的Activity#onCreate
方法中按要求绑定,但不接收任何事件。我还通过打印出活动和服务的进程 ID 来确认,并且两者都报告这是同一个进程,所以这不是问题。
作为测试,我删除了产品风格,并仅使用应用程序清单文件中定义的单个包名称构建了应用程序,现在广播管理器似乎按预期运行。在我发送的意图上,我只是设置操作。
我需要设置其他内容吗?
如果你查看LocalBroadcastManager
的源代码,你会发现如果你给你的Intent
标志Intent.FLAG_DEBUG_LOG_RESOLUTION
(通过使用Intent.addFlags(int)
(,它会在logcat中打印非常有用的信息:你可能想尝试有和没有口味,并比较结果看看出了什么问题。
我在同一项目中有org.cmpny.app
和org.cmpny.app.additional
命名空间;LocalBroadcastManager工作正常,不需要在AndroidManifest中进行调整(除了LocalBroadcastManager不能与":remote"服务一起使用,但这是另一点(