Android onStop()前面是否总是有onPause()呢
我读过一篇文章,在调用onStop()之前总是要先调用onPause(),不管是什么情况。参考:图1 我们知道,当一个活动没有用户焦点但仍然部分可见时,它会暂停,而当它根本不可见时,它会停止 现在,在场景中,当用户处于活动中,并从“最近的应用程序”窗口选择并进入另一个应用程序时,活动将从“已恢复/正在运行”状态进入“已停止”状态。没有中间暂停状态。 不是吗 在onStop()之前始终使用onPause()的好理由是什么。我们可以在onStop()中执行onPause()中的操作为什么我们总是需要onPause()在onStop()之前?是的,将始终执行onPause()方法。事实上,它是保证在活动失去焦点/停止/破坏时调用的唯一方法 查看此页面: onResume()Android onStop()前面是否总是有onPause()呢,android,Android,我读过一篇文章,在调用onStop()之前总是要先调用onPause(),不管是什么情况。参考:图1 我们知道,当一个活动没有用户焦点但仍然部分可见时,它会暂停,而当它根本不可见时,它会停止 现在,在场景中,当用户处于活动中,并从“最近的应用程序”窗口选择并进入另一个应用程序时,活动将从“已恢复/正在运行”状态进入“已停止”状态。没有中间暂停状态。 不是吗 在onStop()之前始终使用onPause()的好理由是什么。我们可以在onStop()中执行onPause()中的操作为什么我们总是需要
当活动将开始与 再次使用。此时,您的活动位于活动堆栈的顶部, 用户输入到它始终后跟onPause() 始终调用
onPause()
。这是有保证的。如果需要保存活动中的任何状态,则需要将其保存在onPause()
中onStop()
可以在onPause()之后调用,也可以不调用。视情况而定
有很多生命周期方法。您不需要覆盖所有这些。您只需覆盖需要(或想要)自定义活动行为的区域。有很多生命周期方法,因为不同的应用程序有不同的需求。活动的生命周期记录良好,行为良好。这允许程序员根据应用程序的特定需求,将代码精确地放在需要的地方
你已经问过了
在onStop()之前始终使用onPause()的好理由是什么。
我们可以在onStop()中执行onPause()中的操作
当Android想要做其他事情时,如果活动位于前台,则总是在活动上调用onPause()
。它可能会启动另一个活动,从而导致调用您的活动的onStop()
。它可以在您的活动中调用onResume()
。它可能会终止您的进程,而不调用任何其他生命周期方法
由于不能保证调用onStop()
,因此不能总是在onStop()中执行onPause()中的操作
在大多数活动中,您会发现需要将代码放入onResume()
和onPause()
。您通常不必在onStop()
、onStart()
或onRestart()
中执行任何操作您是否考虑过登录这两种方法以查看结果?是的,确实如此。。。你有什么问题吗?生命周期图会回答你的问题。@SimonAndréForsberg我是学习android开发的初学者,我还不知道log和log cat的事情。我正在学习如何编写我的第一个程序。@gunar是的,我已经编辑了我的问题来说明我想问什么。i、 e.为什么在onStop()之前总是需要onPause()?从技术上讲,正如生命周期图所示。我想你的意思是,onPause
总是被调用,但是onStop
不是。“不,onPause()方法总是会被执行。”是的,他们这样说。但是为什么呢@始终调用user2882662 onPause,因为这是ActivityManager允许应用程序清理以避免内存泄漏的方式。如果不保证调用任何方法,则每次ActivityManager杀死应用程序时,应用程序都会泄漏内存。当你的应用进入后台时,onPause被执行<代码>这是你应该注销广播接收器等内容的地方。
如果你的应用程序暂停,可能不会调用onStop,但ActivityManager会将其杀死,如果你的应用程序打开了句柄,则会泄漏内存。根据这篇文章,onPause在某些情况下不被称为onPause@布恩,重点是什么<如果长按HOME键显示“最近的任务”,则不会调用code>onPause(),但活动未暂停,它仍然是屏幕上最重要的活动。如果用户从“最近的任务”列表中选择了某项任务,则您的活动将调用onPause()
,如果用户未选择某项任务,则您的活动仍然是屏幕上最重要的活动。这与您的活动
显示对话框
时非常相似。在这种情况下,对话框
覆盖了您的活动
,但是您的活动
没有暂停,…onPause()
不会在您的活动
上调用,并且您的活动
仍然是屏幕上最前面的活动。在任何情况下,OP都会询问onPause()
和onStop()
之间的区别。如果您的活动
已暂停,则保证调用onPause()
。如果您的应用程序被终止,则保证在最前面的活动中调用onPause()
,但onStop()
可能会被调用,也可能不会被调用。