完成()后是否可以恢复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可能根本不会被调用。这不是我们在这里讨论的