Context注册的接收器如何工作

时间:2018-01-21 22:34:38

标签: android broadcastreceiver android-broadcast android-broadcastreceiver

我的困惑是 -

如果上下文注册的接收器只要他们的注册上下文有效就会收到广播 - 那么如果应用未启动,应如何收到通知。

清单声明的接收器中,接收器应用程序将由系统启动,那么它如何用于上下文注册的接收器

2 个答案:

答案 0 :(得分:0)

无论如何,您需要contextBroadcasts onReceive方法接收BroadcastReceiver

对于 Manifest-registered 接收器,如果应用程序未运行,则系统可能启动应用程序并在应用程序当前未运行时传送广播。在onReceive()之后,系统可以随时终止进程以回收内存。在这种情况下通过的context是:
上下文类:android.app.ReceiverRestrictedContext
申请背景:android.app.Application

对于上下文注册的收件人,Broadcasts | Android Developers中明确说明了这一点:

  

只要注册上下文有效,上下文注册的接收器就会接收广播。例如,如果您在“活动”上下文中注册,则只要活动未被销毁,您就会收到广播。如果您在应用程序上下文中注册,则只要应用程序正在运行,您就会收到广播。

答案 1 :(得分:0)

如果您在清单中声明BroadcastReceiver,Android会创建BroadcastReceiver的实例,并在想要发送广播时调用onReceive() { {1}}到该接收者(基于指定的Intent条件。