所有
我有一个广播接收器,它将启动一个intent服务,在一个单独的线程上做一些工作。
我尝试深入了解Intent文档以找到获取用于创建intent的上下文的方法:
Intent(Context packageContext, Class<?> cls)
然而,on start命令的签名如下,并且不允许您访问传递的上下文。我没有看到获取上下文作为意图的公共方法,但我可能错过了一些东西。
public int onStartCommand(Intent intent, int flag, int startId)
是否有办法获取用于创建意图的上下文,而无需将第二个广播的路由返回接收者以访问UI或处理程序。
由于
答案 0 :(得分:1)
我尝试深入了解Intent文档以找到获取用于创建intent的上下文的方法
由于Context
可能不在您的流程中,因此无法做到这一点。而且,没有必要。
有没有办法获得用于创建意图的上下文而不需要将第二个广播的路由返回接收器来访问UI
BroadcastReceiver
无法更新用户界面。因此,即使你想要的东西是可能的(它不是),它对你没有好处。
此外,由于您开始使用IntentService
,因此您可能拥有 UI。用户可以控制他们的手机,因此非常欢迎他们离开您的应用并转到主屏幕或其他应用。
处理此问题的一种模式是从IntentService
发送有序广播。让活动为该广播实现高优先级BroadcastReceiver
,并在清单中注册普通优先级接收者。后者会引发Notification
,因此如果您的活动不在前台,则用户会看到Notification
。 Here is a blog post进一步详细介绍,here is a sample application展示了这项技术。