Android 从不从广播接收器启动活动?

Android 从不从广播接收器启动活动?,android,android-activity,broadcastreceiver,Android,Android Activity,Broadcastreceiver,android初学者,请耐心听我说 根据文档,您不应该从广播接收器启动活动: “(…)切勿启动活动以响应传入的广播意图。” (文档的最后一行) 因此,我的问题是:既然我需要从后台服务中显示活动选择器,而且我不应该从广播接收器启动活动,那么我该如何解决我的问题呢?您的确切情况需要进一步澄清。你到底想干什么 同时,以下是背景说明,可以帮助您了解此规则何时适用,以及您是否应该在应用程序中违反此规则 “(…)切勿启动活动以响应传入的广播 意图。” 这与使用通知栏向用户发出通知的想法有关。这样做的目的

android初学者,请耐心听我说

根据文档,您不应该从广播接收器启动活动:

“(…)切勿启动活动以响应传入的广播意图。”

(文档的最后一行)


因此,我的问题是:既然我需要从后台服务中显示活动选择器,而且我不应该从广播接收器启动活动,那么我该如何解决我的问题呢?

您的确切情况需要进一步澄清。你到底想干什么

同时,以下是背景说明,可以帮助您了解此规则何时适用,以及您是否应该在应用程序中违反此规则


“(…)切勿启动活动以响应传入的广播 意图。”

这与使用通知栏向用户发出
通知的想法有关。这样做的目的是,你永远不应该打断用户当时正在做的事情

安卓赞赏用户在任何时候都知道自己想做什么,并且操作系统无权打断用户。这与使用弹出窗口向用户发出传入事件警报的其他系统形成直接对比


因此,你的报价背后的想法是,你永远不应该通过在用户当前活动上启动自己的活动来吸引用户的注意力

这可能是可怕的,想象一下你正处于一个游戏的中间,突然路易斯的活动显示在游戏的前面。
但是,该规则也有例外情况:

1. 如果用户已经在使用你的应用程序,并且你收到了
意图
,那么你的
广播接收器
应该启动你自己的活动

当用户不使用您的应用程序时,请发布
通知

你可以在Whatsapp等应用程序中看到这种行为。如果你在应用程序中,你不会收到通知,而应用程序只会显示新消息。如果您退出应用程序,您将收到通知

2. 有时候,开始这样的活动是意料之中的行为,这是有道理的

一个明显的例子是手机应用程序。它必须在电话铃响时启动,我们已经接受了这一点

下面是从接收者开始活动的另一个合法用例。这是一款时钟应用程序,设计用于在手机充电时启动:


如果您需要提醒用户任何事情,请发送通知。如果很重要,用户将单击通知,这将打开活动。你好,Richard。谢谢你的快速回答。在我的应用程序中,我正在使用一项导出数据的服务。以下是典型的场景:1。用户点击操作栏2中的导出选项。将启动意图服务,以处理csv文件3的生成。从服务4生成本地广播意图。该广播由接收者处理,接收者负责让用户决定如何发送csv文件(Intent.ACTION_SEND)。有没有比使用服务+广播接收者更好的方法,而不阻塞应用程序的主线程?您好。好的,我已经从等式中删除了广播接收器,因为可以通过使用标志\u activity\u NEW\u TASK标志从服务中启动活动…@LuisAbreu是的,这可能是一种更简单的方法,用于您尝试执行的操作。在更复杂的情况下,您可能希望使用
android.os.Message
android.os.Messenger
处理程序进行通信。我只是提到这一点,让你知道它的存在,如果你需要它,你可以谷歌为它,因为你了解更多。祝你好运,再次你好,理查德。是的,我见过。然而,在这种情况下,它似乎比必要的更复杂:)@LuisAbreu确实如此。我想我会把它放在你的雷达上以备将来使用。