finish()vs startActivity()

时间:2017-09-06 14:57:46

标签: android bundle state onsaveinstancestate

根据Android文档,finish()确实完成了"返回"按钮呢。因此,当我调用finish()时,基本上会调用onStop()。

我试图覆盖onStateSaveInstance()以保存当前状态,但从不调用它。但是,如果我通过创建新的Intent并使用startActivity()转到上一个活动,则会调用onStateSaveInstance()方法。这有什么理由吗?

1 个答案:

答案 0 :(得分:0)

  

因此,当我调用finish()时,基本上会调用onStop()。

不一定。当您的活动不再可见时,系统会调用onStop()finish()只有在您拨打onStop()时活动可见时才会触发finish()来电。

  

我试图覆盖onStateSaveInstance()以保存当前状态,但它永远不会被调用

正确。你正在摧毁这项活动。没有要保存的实例状态。

  

但是,如果我通过创建新的Intent并使用startActivity()转到上一个活动,则调用onStateSaveInstance()方法

不一定。它将取决于Intent标志,清单中的android:launchMode等。

  

这是否有原因?

当您的活动被销毁时,不会调用

onSaveInstanceState()。没有实例状态可以保存,因为实例正在消失。