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

Cap*_*irk 7 android android-intent android-service android-reboot

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

如果这显然已经死了,请原谅我.我从未完全理解重启机制.

cyb*_*sam 7

应用程序始终在其任何活动/服务/接收器之前启动.这里有几个博客详细介绍:

将帖子

但是,根据@CommansWare的评论:

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

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

  • @CommonsWare:Blog 2声明"此方法调用makeApplication()方法,该方法将特定于应用程序的类加载到内存中." 要非常清楚,请查看[makeApplication的代码](http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.3_r1/android/app/ LoadedApk.java#LoadedApk.makeApplication%28boolean%2Candroid.app.Instrumentation%29),我们看到它返回一个Application实例.此外,问题甚至没有询问提供者,但为了让你开心:-),我已经编辑了我的答案,删除了这个词. (2认同)
  • 我同意你的编辑.`ContentProvider`实际上是一个混合包.基于日志记录,`ContentProvider`的实例是在`Application`的实例之后创建的.然而,在`Application`的`onCreate()`之前调用`ContentProvider`的`onCreate()`. (2认同)