Android 父活动通常在锁定时停止,但在方向更改后不会停止
我有一个带有两个活动的演示应用程序。父应用程序启动时启动,子应用程序通过父应用程序中的按钮启动。子项设置为透明背景,以便在子项启动时父项不会停止 我启动应用程序,启动Parent,然后启动Child。然后我锁定设备。我看到子对象调用onStop(),然后父对象调用onStop() 但是,如果我没有锁定应用程序,而是旋转设备,这会触发方向更改,那么当我锁定应用程序时,只有孩子调用onStop()。在我解锁应用程序并点击后退按钮后,子级和父级都调用onStop(),因此父级活动处于一种奇怪的状态,它不可见,但它没有调用onStop()Android 父活动通常在锁定时停止,但在方向更改后不会停止,android,Android,我有一个带有两个活动的演示应用程序。父应用程序启动时启动,子应用程序通过父应用程序中的按钮启动。子项设置为透明背景,以便在子项启动时父项不会停止 我启动应用程序,启动Parent,然后启动Child。然后我锁定设备。我看到子对象调用onStop(),然后父对象调用onStop() 但是,如果我没有锁定应用程序,而是旋转设备,这会触发方向更改,那么当我锁定应用程序时,只有孩子调用onStop()。在我解锁应用程序并点击后退按钮后,子级和父级都调用onStop(),因此父级活动处于一种奇怪的状态,它
如果我
启动应用程序->启动儿童活动->旋转设备->锁定设备->解锁设备,这就是我在Nexus 5(Android 5.0.1)上得到的:
E/ROTATION﹕ ParentActivity.onStart()
E/ROTATION﹕ Orientation: portrait
E/ROTATION﹕ ChildActivity.onStart()
E/ROTATION﹕ Orientation: portrait
E/ROTATION﹕ ChildActivity.onStop()
E/ROTATION﹕ ChildActivity.onStart()
E/ROTATION﹕ Orientation: landscape
E/ROTATION﹕ ParentActivity.onStop()
E/ROTATION﹕ ParentActivity.onStart()
E/ROTATION﹕ Orientation: landscape
E/ROTATION﹕ ChildActivity.onStop()
E/ROTATION﹕ ChildActivity.onStart()
E/ROTATION﹕ Orientation: portrait
E/ROTATION﹕ ParentActivity.onStop()
E/ROTATION﹕ ParentActivity.onStart()
E/ROTATION﹕ Orientation: portrait
E/ROTATION﹕ ChildActivity.onStop()
E/ROTATION﹕ ChildActivity.onStart()
E/ROTATION﹕ Orientation: landscape
E/ROTATION﹕ ParentActivity.onStop()
E/ROTATION﹕ ParentActivity.onStart()
E/ROTATION﹕ Orientation: landscape
i、 例如,无法重现您描述的问题。事实上,如果您偶尔看不到onStop()
,这是正常的,因为它不能保证被调用
请注意,在内存不足的情况下,如果系统没有足够的内存在调用活动的onPause()方法后保持其进程运行,则可能永远不会调用此方法
此外,请参见该页上提供的活动生命周期表:
突出显示的文本如下所示:
注意上表中的“Killable”列——对于那些标记为Killable的方法,在该方法返回承载活动的进程后,系统可能随时终止该进程,而不执行其另一行代码因此,应使用onPause()方法将任何持久数据(如用户编辑)写入存储器
也就是说,如果正在执行的操作很重要,则应使用onPause()
而不是onStop()
希望这能有所帮助。希望这个答案能帮助你,谢谢ozbek。我很惊讶你没有看到这种行为。我每次都看到它。当设备锁定时,您是否改变了方向?我确保在锁定解锁时保持方向不变。我在Nexus5和4.4.4上进行了测试。我知道在某些情况下不会调用onStop(),但对我来说,这种情况每次都会发生。我可以使用onPause(),但我更愿意跟踪活动完全不可见的情况,而不是只是部分模糊。但是父活动不可终止,因为它在子活动下是否可见?@SkyKelsey:不,我没有更改设备方向。但是,当我测试时,屏幕锁定(PIN)已启用。也许这就是效果,但我现在不能测试它(旅行,对不起)。主要的一点是,你不能依赖于onStop
@EugenPechanec:否定的,当scree关闭和/或锁屏可见时,父活动和子活动都是不可见的。我将奖励你运行示例项目并试一试,尽管我觉得这并不能回答问题。