可以在finish()之后恢复Android活动吗?

时间:2015-04-24 13:49:17

标签: android android-activity android-lifecycle

检查一些遗留代码我找到了这个代码段:

@Override
public void onResume() {
    if (!isFinishing()) {
        ...
    }
    super.onResume();
}

尽管在方法结束时调用super.onResume(),但不鼓励:

  

注意:您必须始终调用这些生命周期方法的实现   在做任何工作之前的超类实现,如图所示   上面的例子   http://developer.android.com/guide/components/activities.html

我关注if (!isFinishing())电话,这有意义吗?正如我所看到的,仅在mFinishedfinish()上检查活动代码finishActivity()变量是否设置为true,是否可以通过Android生命周期恢复正在销毁的活动?

提前致谢。

2 个答案:

答案 0 :(得分:1)

你回答的问题是"没有"如果活动被销毁,则不能恢复活动 这是一个很好的讨论: Understanding of isFinishing()

  

此代码的原因可能是区分方向   改变和实际完成活动重要的是在这里注意   is isFinishing:true表示调用isFinishing()   onDestroy()返回true,即在以下时间发生:

     

用户点击"返回"按钮或活动的代码调用它finish()   (isFinishing()在活动关闭之后返回false   电话轮换,以便重新开始)

http://ogrelab.ikratko.com/activity-lifecycle-explained-in-details/

答案 1 :(得分:1)

最后,遗留代码在page方法的某些环境下调用了finish()。但请查看onCreate() javadoc

  

您可以在此函数中调用finish(),在这种情况下   onDestroy()将立即被调用,而不会有任何其余的   活动生命周期(onStart(),onResume(),onPause()等)执行。

因此,此onCreate()调用在isFinishing()

内无效