【发布时间】:2011-06-02 21:45:06
【问题描述】:
我正在开发的 android 应用程序会覆盖 Application 类以将轻量级状态(用户名、gps 位置等)存储在静态变量中。此状态的大部分设置在启动活动的 OnCreate 中(从首选项检索用户名,位置侦听器运行)。依赖启动活动来初始化 Application 类是否安全?是否有任何情况下可能会重新创建 Application 类而不创建 Launch 活动?
问题出现是因为我在手机睡了几个小时后恢复应用程序时遇到了一个空指针异常,它访问了应用程序类中的一个变量(应用程序在手机进入睡眠状态之前留在前台)。是否有可能在手机睡着和唤醒手机时终止进程,重新创建 Application 类,恢复堆栈中的顶部活动,但启动 activity.onCreate 没有运行,因此 Application 类没有初始化?
请注意,我已尝试通过强制应用停止使用“设置”/“管理”应用来测试这些场景。但是,我无法重现该问题。下次运行时,会创建 Application 类,然后是启动 activity.onCreate。
是否可以安全地假设 Application 类实例将与进程一样存在,并且在创建 Application 类时它相当于“重新启动”应用程序,即。从一个新的活动堆栈开始(堆栈上的第一个活动是启动活动)?
【问题讨论】:
-
不确定是否有帮助,但你读过这个吗:developer.android.com/guide/topics/fundamentals.html#actlife
-
您是如何解决问题的?
标签: android android-activity stack lifecycle