初学者在android中,所以请耐心等待...
根据文档,您不应该从广播接收器开始活动:
"(...)永远不要启动活动以响应传入的广播意图。"
http://developer.android.com/training/run-background-service/report-status.html
(文档的最后一行)。
所以,这是我的问题:因为我需要从后台服务中显示活动选择器,因为我不应该从广播接收器开始活动,那么我该如何解决我的问题?
答案 0 :(得分:2)
您的确切情况需要进一步澄清。究竟你想做什么?
与此同时,以下是背景说明,可帮助您了解此规则何时适用,以及是否应在应用中将其分解。
“(...)永远不要启动活动以响应传入的广播 意图“。
这与通过使用通知栏向用户提供Notification
的想法有关。我们的想法是,您不应该打断用户当时正在尝试做的事情。
Android认识到用户随时知道他们想要做什么,并且操作系统无权中断用户。这与使用弹出窗口提醒用户传入事件的其他系统形成鲜明对比。
因此,您的引言背后的想法是,您不应该通过在其上启动您自己的活动,将用户的注意力从他当前的活动中拉出来。
这可能很糟糕,想象你正处于游戏中,突然路易斯的活动显示在游戏面前。
但是,规则有例外:
如果用户已在使用您的应用,并且您收到了Intent
,那么您的BroadcastReceiver
应该会启动您自己的活动。
当用户未使用您的应用时,请改为发布Notification
。
您可以在 Whatsapp 等应用中看到此类行为。如果您在应用程序中,则不会收到通知,而应用程序只会显示新消息。如果您不在应用程序中,则会收到通知。
有时开始这样的活动是预期的行为,这是有意义的。
一个明显的例子是手机应用程序。它必须在电话响起时启动,我们已经接受了。
这是从接收者开始活动的另一个合法用例。它是一个时钟应用程序,设计用于在手机充电时启动: