7

请原谅我问了这么一个基本的问题。我了解 Application 类在我的应用程序进程启动时被实例化,并且我了解手机完成启动时将调用我的启动接收器。我假设由于手机通过清单知道我的应用程序包含 BOOT_COMPLETED 意图过滤器,因此重启过程是。手机重启,手机以 BOOT_COMPLETED 启动所有进程,手机触发 BOOT_COMPLETED 广播。我的担忧来自想知道我是否在启动接收器中引用了应用程序类实例变量,如果接收器会在我的应用程序类被实例化之前被调用。

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

4

2 回答 2

7

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

[已编辑]

但是,根据@CommansWare 的评论:

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

因此,尝试在提供者的onCreate().

于 2015-01-24T23:22:29.380 回答
4

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

我更倾向于将其表述为“电话重新启动,电话关闭BOOT_COMPLETED广播,并进行正常的广播处理,包括启动任何必要的进程”。

我的担忧来自想知道我是否在启动接收器中引用了应用程序类实例变量,如果接收器会在我的应用程序类被实例化之前被调用。

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

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

  • Application实例,然后

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

于 2015-01-24T22:56:01.023 回答