之前一直有一个疑惑,为什么执行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系统自己决定的。