在Android活动生命周期中,为什么活动在转到onPause()
之前会经过onStopped()
?为什么州不能直接转到onStopped()
?
答案 0 :(得分:2)
因为documentation如此说:-)
这是有道理的。应用程序已打开,用户按下主页按钮:onPause()
被调用。一段时间后,系统需要内存并关闭应用程序:onStop()
被调用。
答案 1 :(得分:2)
暂停和停止是相关但不同的状态。从用户的角度来看,暂停的活动不能与之交互,但仍然可见(例如,如果它已将不同的活动称为对话)。保证停止的活动根本不可见(用途在另一个活动或甚至是不同的应用程序中)。
当然,停止意味着暂停,但事实并非如此。
- 如果屏幕前景中的活动(位于堆栈顶部),则活动或正在运行。
- 如果活动失去焦点但仍然可见(也就是说,新的非全尺寸或透明活动专注于您的活动之上 活动),暂停。暂停的活动完全存在(它 维护所有州和会员信息并保持附加 窗口管理器),但可以在极低内存中被系统杀死 的情况。
- 如果某项活动被其他活动完全遮挡,则已停止。它仍然保留所有状态和成员信息,但是,它不再对用户可见,因此它的窗口是隐藏的 当其他地方需要记忆时,系统经常会被系统杀死。
Android开发者网站“培训”部分的Managing the Activity Lifecycle article中提供了更详细的说明。
答案 2 :(得分:2)
请参阅活动文档:
http://developer.android.com/reference/android/app/Activity.html
的onPause()
"在系统即将开始恢复上一个活动时调用。这通常用于将未保存的更改提交到持久数据,停止动画以及可能消耗CPU等的其他事情。此方法的实现必须非常快,因为在此方法返回之前,下一个活动将不会恢复。 如果活动返回到前面,则返回onResume();如果用户不可见,则返回onStop()。"
注意:我会说"恢复另一个活动"而不是"恢复一个优秀的活动"。
的onStop()
"当活动不再对用户可见时调用,因为另一个活动已恢复并且正在覆盖此活动。这可能是因为正在开始新活动,现有活动被带到这个活动之前,或者这个活动正在被销毁。 如果此活动返回与用户交互,则执行onRestart(),如果此活动消失,则执行onDestroy()。"
答案 3 :(得分:0)
因为,当您的应用程序被旋转或对话框打开时,会执行onPaused()。 onStop()当你的应用程序不在屏幕上时,必要的是生命周期中这两点指向用户或程序员可以识别执行的操作。