我正在开发的 Android 应用程序覆盖了 Application 类以在静态变量中存储轻量级状态(用户名、GPS 位置等)。大部分状态都是在启动活动的 OnCreate 方法中设置的(从偏好中获取的用户名,位置监听器运行等)。依赖启动活动初始化 Application 类是否安全?是否存在 Application 类在没有启动活动创建的情况下重新创建的情况?
这个问题是因为在手机睡眠几个小时后恢复应用程序时遇到了空指针异常,而应用程序在手机进入睡眠前一直处于前台。可能的情况是在手机睡眠期间进程被杀死,唤醒手机时重新创建了 Application 类,栈顶的活动被恢复,但启动活动的 onCreate 方法没有运行,因此 Application 类没有被初始化。
请注意,我已经尝试通过在“设置/管理应用程序”中强制停止应用程序来测试这些情况。但我无法重现这个问题。下一次运行时,Application 类会被创建,接着是启动活动的 onCreate 方法。
可以安全地假设 Application 类实例将存在于整个进程的生命周期,并且当 Application 类被创建时,它相当于“重新启动”应用程序,即从一个新的活动堆栈开始(堆栈上的第一个活动是启动活动)吗?
这个问题是因为在手机睡眠几个小时后恢复应用程序时遇到了空指针异常,而应用程序在手机进入睡眠前一直处于前台。可能的情况是在手机睡眠期间进程被杀死,唤醒手机时重新创建了 Application 类,栈顶的活动被恢复,但启动活动的 onCreate 方法没有运行,因此 Application 类没有被初始化。
请注意,我已经尝试通过在“设置/管理应用程序”中强制停止应用程序来测试这些情况。但我无法重现这个问题。下一次运行时,Application 类会被创建,接着是启动活动的 onCreate 方法。
可以安全地假设 Application 类实例将存在于整个进程的生命周期,并且当 Application 类被创建时,它相当于“重新启动”应用程序,即从一个新的活动堆栈开始(堆栈上的第一个活动是启动活动)吗?