请原谅我这样一个基本问题。我知道应用程序类在应用程序的进程启动时会被实例化,我知道手机完成后会启动我的启动接收器。我假设,因为手机通过清单知道我的应用程序持有BOOT_COMPLETED意图过滤器,重启过程就是。电话重新启动,电话用BOOT_COMPLETED启动所有进程,手机触发BOOT_COMPLETED广播。我担心的是,如果在实例化Application类之前调用接收器,我是否会在启动接收器中引用Application类实例变量。
再次请原谅我,如果这显然是死的。我从来没有完全理解重启机制。
答案 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
)