Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.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活动?_Android_Android Activity_Android Lifecycle - Fatal编程技术网

完成()后是否可以恢复Android活动?

完成()后是否可以恢复Android活动?,android,android-activity,android-lifecycle,Android,Android Activity,Android Lifecycle,检查一些遗留代码我发现了以下代码段: @Override public void onResume() { if (!isFinishing()) { ... } super.onResume(); } 尽管在方法末尾调用了super.onResume(),但不鼓励这样做: 注意:这些生命周期方法的实现必须始终调用 在执行任何工作之前执行超类实现,如 上面的例子 我关心if(!isFinishing())调用,这有意义吗?如我所见,检查活动代码mFin

检查一些遗留代码我发现了以下代码段:

@Override
public void onResume() {
    if (!isFinishing()) {
        ...
    }
    super.onResume();
}
尽管在方法末尾调用了
super.onResume()
,但不鼓励这样做:

注意:这些生命周期方法的实现必须始终调用 在执行任何工作之前执行超类实现,如 上面的例子

我关心
if(!isFinishing())
调用,这有意义吗?如我所见,检查活动代码
mFinished
变量仅在
finish()
finishActivity()
上设置为true时,是否可以在整个Android生命周期中恢复正在销毁的活动


提前感谢。

对于您的问题,答案是“否”,如果活动被销毁,则无法恢复。
下面是一个很好的讨论:

此代码的原因可能是为了区分方向 此处需要注意的活动的变更和实际完成情况 isFinishing:true,这意味着在 onDestroy()返回true,即在以下情况下发生:

用户点击“后退”按钮或活动的代码调用它的
finish()
(
isFinishing()
在之后关闭活动时返回false 电话旋转(以便再次启动)


最后,遗留代码在
onCreate()
方法的某些循环下调用了
finish()
。但是看看
onCreate()

您可以在此函数中调用finish(),在这种情况下 将立即调用onDestroy(),而不调用 正在执行活动生命周期(onStart()、onResume()、onPause()等)


因此,这个
isFinishing()
调用在有趣的
onResume()中是无用的。你在哪里找到的代码?是我公司应用程序的主要活动。onDestroy():在活动被销毁之前你收到的最后一个呼叫。这可能是因为活动正在完成(有人对其调用finish(),或者因为系统正在临时销毁此活动实例以节省空间。您可以使用isFinishing()方法区分这两种情况。@shkschneider我已经看到了,但这在onResume()中有意义吗?我假设finish()或系统内部调用正在UI线程()上执行,那么,活动是否会在销毁时恢复?我同意
onResume()
甚至在
super.onResume()
之前的代码对我来说毫无意义。我理解你的观点,并且使用isFinishing()的原因在onDestroy中,但在onResume()中对我来说仍然没有意义在onDestroy中没有理由使用isFinishing(),因为onDestroy可能根本不会被调用。这不是我们在这里讨论的