android开发中finish()、onDestroy()、System.exit(0)的区别

来源:互联网 发布:南山滑雪场 知乎 编辑:程序博客网 时间:2024/05/12 18:46

之前一直有一个疑惑,为什么执行activity跳转之后的代码段依然会被执行,包括finish()之后的代码也一样会被执行(打Log发现的),今天就总结一下吧。

  • Activity.finish()
    当你的activity动作完成之后或者需要关闭当前页面的时候调用的方法。但是由于android在这之后只是将当前activity移出了Task(栈),并没有立刻调用onDestroy(),所以它的资源并没有被立刻释放,finish()后面的代码段一样可以继续执行。由于栈中已经没有了这个activity,所以当我们按back键的时候,就不会再回到这个界面了。
  • onDestroy()
    这个方法是由android自行调用的,当它被执行的时候,系统回收了当前activity所占用的资源,下次重新进入这个界面的时候,需要重新onCreate()创建。
  • System.exit()
    这个函数是面向应用程序的,当它被调用的时候,整个进程就结束了。
  • 附加
    finish()经常被用在防止回退的场景,比如用户登录成功之后,我们不希望用户通过back依然会回到登录界面,那么就可以在登录成功后执行finish()。注意finish()仅仅代表结束当前activity,我的理解就是仅仅是把这个界面推到了后台,我们看不见了而已,至于何时释放资源是由android系统自己决定的。
0 0