当前位置: 首页 > 知识库问答 >
问题:

finish()与startActivity()的比较

越雨泽
2023-03-14

根据Android文档,finish()的功能与“后退”按钮的功能完全相同。基本上,当我调用finish()时,会调用onStop()。

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

共有1个答案

段宏毅
2023-03-14

所以基本上,当我调用完()时,就会调用onStop()。

不一定。onStop()是在您的活动不再可见时调用的。over()仅在您调用over()时,如果活动可见,才触发对onStop()的调用。

我试图重写onStateSaveInstance()以保存当前状态,但从未调用它

对的您正在破坏活动。没有要保存的实例状态。

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

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

这有什么原因吗?

销毁活动时,将不会调用onSaveInstanceState()。由于实例正在离开,因此没有要保存的实例状态。

 类似资料:
  • 描述 (Description) java.util.zip.ZipOutputStream.finish()方法完成编写ZIP输出流的内容而不关闭底层流。 将多个过滤器连续应用于同一输出流时,请使用此方法。 声明 (Declaration) 以下是java.util.zip.ZipOutputStream.finish()方法的声明。 public void finish() throws

  • 描述 (Description) java.util.zip.InflaterOutputStream.finish()方法完成将压缩数据写入输出流而不关闭底层流。 将多个过滤器连续应用于同一输出流时,请使用此方法。 声明 (Declaration) 以下是java.util.zip.InflaterOutputStream.finish()方法的声明。 public void finish()

  • 描述 (Description) java.util.zip.GZIPOutputStream.finish()方法完成将压缩数据写入输出流而不关闭底层流。 将多个过滤器连续应用于同一输出流时,请使用此方法。 声明 (Declaration) 以下是java.util.zip.GZIPOutputStream.finish()方法的声明。 public void finish() throw

  • 描述 (Description) java.util.zip.DeflaterOutputStream.finish()方法完成将压缩数据写入输出流而不关闭底层流。 将多个过滤器连续应用于同一输出流时,请使用此方法。 声明 (Declaration) 以下是java.util.zip.DeflaterOutputStream.finish()方法的声明。 public void finish()

  • 描述 (Description) 调用java.util.zip.Deflater.finish()方法时,表示压缩应以输入缓冲区的当前内容结束。 声明 (Declaration) 以下是java.util.zip.Deflater.finish()方法的声明。 public void finish() 例子 (Example) 以下示例显示了java.util.zip.Deflater.fin

  • 我有一个问题关于start活动(意图)和onStop。Android API建议在onStop中保存数据,这就是我在这里所做的: 但是,我想在保存下一个活动后启动它-因此我需要使用intent和startActivity(intent)。 我的问题是,带两个标志的startActivity(intent)是在完成应用程序时调用onStop()方法,还是需要调用finish()?是否允许我在开始新活