是否保证在调用定义的引导接收器之前实例化Application类

时间:2015-01-24 22:53:05

标签: android android-intent android-service android-reboot

请原谅我这样一个基本问题。我知道应用程序类在应用程序的进程启动时会被实例化,我知道手机完成后会启动我的启动接收器。我假设,因为手机通过清单知道我的应用程序持有BOOT_COMPLETED意图过滤器,重启过程就是。电话重新启动,电话用BOOT_COMPLETED启动所有进程,手机触发BOOT_COMPLETED广播。我担心的是,如果在实例化Application类之前调用​​接收器,我是否会在启动接收器中引用Application类实例变量。

再次请原谅我,如果这显然是死的。我从来没有完全理解重启机制。

2 个答案:

答案 0 :(得分:6)

应用程序始终在其任何活动/服务/接收器之前启动。以下是一些详细介绍的博客:

[被修改]

但是,根据@CommansWare的评论:

  

基于日志记录,之后创建ContentProvider的实例   应用程序的实例。但是,onCreate()的   ContentProvider在应用程序的onCreate()之前调用。

因此,尝试在提供程序onCreate()中使用Application实例可能不安全。

答案 1 :(得分:3)

  

手机重新启动,手机以BOOT_COMPLETED启动所有进程,手机触发BOOT_COMPLETED广播。

我会更多地说它"电话重新启动,手机触发BOOT_COMPLETED广播,并进行正常的广播处理,包括启动任何必要的流程"。

  

我担心的是,如果在我的Application类被实例化之前调用接收器,我是否会在启动接收器中引用Application类实例变量。

不应该。实例化的顺序应该是:

  • 您在清单中定义的任何ContentProviders,然后

  • Application个实例,然后

  • 触发流程需求的组件(在这种情况下,是您的ACTION_BOOT_COMPLETED BroadcastReceiver