在android中的内部广播

时间:2011-10-28 08:52:58

标签: java android broadcast

是否可以使用应用程序范围启动广播?那就是:广播在应用程序中无法检测到?

我使用广播来向UI传达一些事件。但最近我将一些代码转发给另一个应用程序,我发现广播正在唤醒两个应用程序(正如预期的那样)。所以我想知道除了改变意图“行动”的价值之外还有什么方法可以解决这个问题

6 个答案:

答案 0 :(得分:5)

如果希望内部应用程序消息传递,则应使用 LocalBroadcastManager ,它是普通广播的最佳替代方法。阅读此帖子以实施:how to use LocalBroadcastManager?

答案 1 :(得分:2)

为什么不使用observer-observable pattern在应用程序中的java类之间进行通信?

答案 2 :(得分:1)

是的,您可以通过Intent.setComponent()使用组件名称。

但如果您的广播总是在进行中,则无需使用它,是吗?你可以使用普通的旧函数调用...

答案 3 :(得分:1)

我认为你必须改变你的行动,如果你使用具有明确意图的setComponent,那么如果这对你来说很好,那么它将起作用,但对于隐式意图,你不能通过应用程序进行限制

有cyanogenmod,你可以在那里签署你的应用程序,你可以阻止在你的手机中安装具有不同签名的应用程序,这意味着你在手机上安装的东西没有人能够安装新的应用程序(除了你),这可以恢复没有人会使用与你相同的动作名称注册接收器

注意: 在应用程序中使用广播进行内部通信是错误的,并且比正常的程序调用慢(这在您的情况下是可能的)。我没有看到你不应该打正常电话的原因。

答案 4 :(得分:1)

@Lukap:签名的应用程序是所有 Android版本的基本功能,只允许授权方为已安装的应用程序提供更新/更改。

Dev Guide

  

所有申请必须签名。如果未签名,系统将不会在仿真器或设备上安装应用程序。

加:

  

注意:在应用程序中使用广播进行内部通信是错误的

错误。在一个应用程序中使用广播 的原因有很多,有些情况下你真的不能没有它。

答案 5 :(得分:1)

使用LocalBroadcastManager。您需要包含支持库,但这是解决此问题的绝佳解决方案,因为它比通过系统发送全局广播更有效。