我注意到,当Android操作系统关闭其不在活动堆栈的顶部活动,我的一些静态变量变得无效。 我绝对相信,该变量指向的对象之前,我并没有改变自己的价值。
休闲活动后,我得到NullPointerException异常的原因我的静态变量之一(这是在应用程序的子类的onCreate初始化,应该是在流程生命周期的任何时候都不要空)为空。
由于它不是我是谁空值的变量,我想这是关闭后台活动和零点静态变量由于内存不足Android操作系统。 可能吗?
我注意到,当Android操作系统关闭其不在活动堆栈的顶部活动,我的一些静态变量变得无效。 我绝对相信,该变量指向的对象之前,我并没有改变自己的价值。
休闲活动后,我得到NullPointerException异常的原因我的静态变量之一(这是在应用程序的子类的onCreate初始化,应该是在流程生命周期的任何时候都不要空)为空。
由于它不是我是谁空值的变量,我想这是关闭后台活动和零点静态变量由于内存不足Android操作系统。 可能吗?
Android不关闭它们不是活动堆栈的顶部活动。 如果您的应用程序转到后台和Android决定是否需要收回它只是杀死承载您的活动进程的内存。 当用户返回到应用程序,Android的创建一个新的进程,并重新创建是在活动堆栈的顶部的活动 。
在大多数的概率,这就是你所看到的。 显然,如果你的进程被杀掉并重新创建,您的静态变量将是无效的。
如果底层VM /线程,该活动在运行中丧生,他们只是被清零。 那么它就像你完全重新启动应用程序。 不要依赖于静态变量,如果你需要保持周围的东西,它存储在一个数据库或偏好。