Android doc说:
“当系统而不是用户关闭活动以节省内存时,......”
但是如何模拟这种情况?我想调试onRestoreInstanceState(Bundle)
方法,但不知道如何。
答案 0 :(得分:32)
你无法以自动方式完成它b / c完全不确定。
请参阅我的回答:https://stackoverflow.com/a/15048112/909956了解详情。
但好消息是,您只需要模拟调用onSaveInstanceState并间接测试这种低内存情况。
onSaveInstanceState可以通过以下方式触发:
答案 1 :(得分:16)
我已经使用过"不要保持活动"开发人员选项,用于重现因内存压力导致活动被杀死时发生的崩溃。您可以在Apps
的{{1}}部分找到它。
一旦离开,它就会销毁每个活动。例如。如果您按home将您的应用程序置于后台,则会破坏当前活动。有关详细信息,请参阅https://stackoverflow.com/a/22402360/2833126。
答案 2 :(得分:11)
有两种模拟机器人杀戮过程的方法:在开发者设置中使用“不要保持活动”设置或者自己杀死应用程序进程。
要终止此过程,请打开要测试的活动,然后按主页按钮将应用程序发送到后台,然后使用Android Studio中的 DDMS (Android设备监视器),选择该过程然后停止该过程(如下图所示)。你的应用程序被杀了。现在,再次打开您的应用程序(访问打开的应用程序列表)。现在你可以测试被杀死的状态。
答案 3 :(得分:8)
出于调试onRestoreInstanceState()
的目的,只需更改屏幕方向(模拟器中的[Ctrl] - [F11])。您的活动将被销毁并重新创建,并且会调用onSaveInstanceState()
/ onRestoreInstanceState()
对。
答案 4 :(得分:4)
使用SetAlwaysFinish应用程序(适用于真实设备和模拟器)或使用Google DevTools应用程序(仅在模拟器中工作)。
这些应用程序使用ActivityManagerNative类的隐藏的AlwaysFinish设置来更改操作系统的行为,并使其在不再处于前台时立即卸载每个活动。这将可靠地触发onSaveInstanceState和onRestoreInstanceState事件。
请参阅以下链接了解更多详情: http://bricolsoftconsulting.com/how-to-test-onsaveinstancestate-and-onrestoreinstancestate-on-a-real-device/
答案 5 :(得分:4)
要调试 onRestoreInstanceState ,您可以执行以下操作:
确保您可以在启动后立即调试应用程序(从构造函数调用 android.os.Debug.waitForDebugger()帮助,它会挂起您的应用程序,直到连接调试器),< / p>
将应用程序置于某种状态,
从设置 - &gt;应用,
通过“最近使用的应用”按钮(它仍将在列表中)通常切换回来,
此时您的应用程序将重新启动, onRestoreInstanceState 将立即在顶级活动中调用。
答案 6 :(得分:1)
这里的答案很好。
现在,居住在遥远的未来,在Android Studio中使用Instant Run也会在通过代码更改重新启动活动时触发保存和恢复。
答案 7 :(得分:0)
在Android 6及更新版本中,这是一个不错的解决方案。请在此处查看我的回答:Simulate killing of activity in emulator