由于用于测试的系统资源不足,我如何模拟 Android OS 杀死 Activity
How can I simulate Android OS killing off an Activity due to low system resources for testing
当用户离开 activity 时,Android 会将其移动到最近使用的应用程序。当 Android 需要更多内存时,它 "kills" 应用程序 - 卸载所有 Activity 对象并将不再存在。用户仍然可以在最近的应用程序中单击该应用程序,这些应用程序会在用户离开的地方启动 activity。这通常会导致 nullPointerException。我们可以通过使用 SharedPreferences、数据库或 savedInstanceState 保存数据来防止它。
如何在不等待 Android 卸载 activity 的对象的情况下测试我是否正确实现了数据保存?即我如何强制 Android 到 "kill" 我的 activity?
只需旋转您的设备,它就会重新创建 activity。所以你将能够模拟你的问题。但除此之外,请在 "OnSaveInstance" 中保存您获得空指针异常的变量的状态,然后在 "OnRestoreInstance" 中恢复它。这将解决您的问题。
确保没有为您的 activity 添加以下任何 属性。
android:configChanges="keyboardHidden|orientation"
or
android:screenOrientation="landscape" or portrait is not set.
因为如果是这种情况,它不会在设备旋转时重新创建 activity。
Developer options
中有一个名为 Apps
的部分。确保 Do not keep activities
已打开,它将允许您测试此行为。只是不要忘记在完成后将其关闭,否则您稍后将在您的应用程序中调试奇怪的生命周期行为。
当用户离开 activity 时,Android 会将其移动到最近使用的应用程序。当 Android 需要更多内存时,它 "kills" 应用程序 - 卸载所有 Activity 对象并将不再存在。用户仍然可以在最近的应用程序中单击该应用程序,这些应用程序会在用户离开的地方启动 activity。这通常会导致 nullPointerException。我们可以通过使用 SharedPreferences、数据库或 savedInstanceState 保存数据来防止它。
如何在不等待 Android 卸载 activity 的对象的情况下测试我是否正确实现了数据保存?即我如何强制 Android 到 "kill" 我的 activity?
只需旋转您的设备,它就会重新创建 activity。所以你将能够模拟你的问题。但除此之外,请在 "OnSaveInstance" 中保存您获得空指针异常的变量的状态,然后在 "OnRestoreInstance" 中恢复它。这将解决您的问题。
确保没有为您的 activity 添加以下任何 属性。
android:configChanges="keyboardHidden|orientation"
or
android:screenOrientation="landscape" or portrait is not set.
因为如果是这种情况,它不会在设备旋转时重新创建 activity。
Developer options
中有一个名为 Apps
的部分。确保 Do not keep activities
已打开,它将允许您测试此行为。只是不要忘记在完成后将其关闭,否则您稍后将在您的应用程序中调试奇怪的生命周期行为。