Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android onStop()前面是否总是有onPause()呢_Android - Fatal编程技术网

Android onStop()前面是否总是有onPause()呢

Android onStop()前面是否总是有onPause()呢,android,Android,我读过一篇文章,在调用onStop()之前总是要先调用onPause(),不管是什么情况。参考:图1 我们知道,当一个活动没有用户焦点但仍然部分可见时,它会暂停,而当它根本不可见时,它会停止 现在,在场景中,当用户处于活动中,并从“最近的应用程序”窗口选择并进入另一个应用程序时,活动将从“已恢复/正在运行”状态进入“已停止”状态。没有中间暂停状态。 不是吗 在onStop()之前始终使用onPause()的好理由是什么。我们可以在onStop()中执行onPause()中的操作为什么我们总是需要

我读过一篇文章,在调用onStop()之前总是要先调用onPause(),不管是什么情况。参考:图1

我们知道,当一个活动没有用户焦点但仍然部分可见时,它会暂停,而当它根本不可见时,它会停止

现在,在场景中,当用户处于活动中,并从“最近的应用程序”窗口选择并进入另一个应用程序时,活动将从“已恢复/正在运行”状态进入“已停止”状态。没有中间暂停状态。

不是吗

在onStop()之前始终使用onPause()的好理由是什么。我们可以在onStop()中执行onPause()中的操作为什么我们总是需要onPause()在onStop()之前?

是的,将始终执行onPause()方法。事实上,它是保证在活动失去焦点/停止/破坏时调用的唯一方法

查看此页面:

onResume()
当活动将开始与 再次使用。此时,您的活动位于活动堆栈的顶部, 用户输入到它始终后跟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()
可能会被调用,也可能不会被调用。