当应用程序处于后台时,活动和片段会发生什么

时间:2019-02-24 19:56:09

标签: android android-fragments

我了解活动/片段的基本生命周期,但是有时候,当用户长时间将应用置于后台状态时,我不确定再次打开该应用会发生什么。最近我遇到了一个错误:用户通过调用保存在类的OnResume方法内的类变量(textView = findViewById(...))中的视图的方法来获取nullpointer异常。该变量在OnViewCreated()中设置。是否有可能在很长一段时间内由于缺少内存而导致片段丢失其字段?何时调用onResume()以及何时调用onCreate()?

1 个答案:

答案 0 :(得分:1)

如果应用长时间在后台运行,则其进程将被操作系统终止,或者设备运行的内存不足。要测试您的应用在这种情况下的工作方式,请在设备的“开发人员”选项中使用标志"Do not keep activities"。在上述情况下,onCreate将在Activity出现在前台时被调用。

如果该进程尚未终止,则将触发onResume。普通变量仍然存在,但是问题在于您无法确定何时调用onResume和何时调用onCreate(因为您无法控制Android何时开始向其扔东西窗外的堆栈...当前未使用的任何东西都可以销毁)。

因此,我的解决方案是添加一个带有if条件的空检查:如果变量为null,则初始化并执行操作,如果不是,则只是执行操作。