活动生命周期中onStopped()之前的onPause()

时间:2014-05-21 00:16:16

标签: android android-activity

在Android活动生命周期中,为什么活动在转到onPause()之前会经过onStopped()?为什么州不能直接转到onStopped()

4 个答案:

答案 0 :(得分:2)

因为documentation如此说:-)

这是有道理的。应用程序已打开,用户按下主页按钮:onPause()被调用。一段时间后,系统需要内存并关闭应用程序:onStop()被调用。

答案 1 :(得分:2)

暂停和停止是相关但不同的状态。从用户的角度来看,暂停的活动不能与之交互,但仍然可见(例如,如果它已将不同的活动称为对话)。保证停止的活动根本不可见(用途在另一个活动或甚至是不同的应用程序中)。

enter image description here

当然,停止意味着暂停,但事实并非如此。

来自official documentation

  
      
  • 如果屏幕前景中的活动(位于堆栈顶部),则活动正在运行
  •   
  • 如果活动失去焦点但仍然可见(也就是说,新的非全尺寸或透明活动专注于您的活动之上   活动),暂停。暂停的活动完全存在(它   维护所有州和会员信息并保持附加   窗口管理器),但可以在极低内存中被系统杀死   的情况。
  •   
  • 如果某项活动被其他活动完全遮挡,则已停止。它仍然保留所有状态和成员信息,但是,它不再对用户可见,因此它的窗口是隐藏的   当其他地方需要记忆时,系统经常会被系统杀死。
  •   

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()当你的应用程序不在屏幕上时,必要的是生命周期中这两点指向用户或程序员可以识别执行的操作。