为了账号安全,请及时绑定邮箱和手机立即绑定

Activity.Finish()方法到底在做什么?

/ 猿问

Activity.Finish()方法到底在做什么?

泛舟湖上清波郎朗 2019-07-16 18:18:21

Activity.Finish()方法到底在做什么?

我开发了一段时间的Android应用程序,并关注了许多关于活动生命周期和应用程序生命周期的文章。

我知道呀Activity.finish()方法调用Activity.onDestroy(),以及从堆栈中移除活动,我想它以某种方式指向操作系统和垃圾收集器,当它发现这样做的好时机时,他可以“做好他的本事”并释放内存.

我来到这个岗位-放弃申请是否会被拒之门外?读马克·墨菲的答案。

这让我有点困惑到底是什么finish()方法实际上是这样的。

我会打电话给你吗finish()onDestroy()不会被打电话?


查看完整描述

3 回答

?
元芳怎么了

打电话时finish()在一个活动中,方法onDestroy()被处决了。此方法可以执行以下操作:

  1. 取消任何活动正在管理的对话框。
  2. 关闭活动正在管理的所有游标。
  3. 关闭任何打开的搜索对话框

还有,onDestroy()不是破坏者。它并不能真正摧毁物体。它只是一种基于某种状态的方法。所以你的实例还活着,非常好*在超类之后onDestroy()运行和返回。Android保持进程周围,以防用户想要重新启动应用程序,这使启动阶段更快。进程不会做任何事情,如果需要回收内存,该进程将被终止。


查看完整回答
反对 回复 2019-07-16
?
红颜莎娜

我对Finish()方法执行了一个简单的测试。列出活动生命周期中的重要回调方法

  1. 在onCreate()中调用Finish():

    onCreate()->onDesty()

  2. 在onStart()中调用Finish():

    onCreate()->onStart()->onStop()->onDesty()

  3. 在onResume()中调用Finish():

    onCreate()->onStart()->onResume()->onPace()->onStop()->onDesty()

我想说的是,在执行Finish()时,方法的对应方以及中间的任何方法都会被调用。

例:

 onCreate() counter part is onDestroy()
 onStart() counter part is onStop()
 onPause() counter part is onResume()


查看完整回答
反对 回复 2019-07-16
?
月关宝盒

onDestroy()意味着最终的清理-释放资源,你可以自己,关闭打开的连接,读者,作家等。如果你不覆盖它,系统做它必须做的。

另一方面,finish()只是让系统知道程序员想要当前的Activity要结束了。因此,它会召唤onDestroy()在那之后。

值得注意的事情:

没有必要打电话给finish()触发呼叫onDestroy()..没有。正如我们所知道的,如果android系统认为当前需要资源,它就可以自由地终止活动。Activity需要被释放。


查看完整回答
反对 回复 2019-07-16

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信