我经常看到以finish()
结尾的类的示例,但绝对不总是如此。我的问题是你何时应该以{{1}}结束课程?它究竟做了什么,用后退按钮结束一个类并用finish()
结束它有什么区别?
提前致谢!
答案 0 :(得分:6)
finish()
来杀死(销毁)一个Activity实例。如果您不需要关闭“活动”手册(在许多情况下都是如此),则无需调用此方法。
但是,如果您在活动中某处需要一个“关闭”的按钮,那么您应该使用此方法。但一般来说,Android中的后退按钮行为将处理这样的事情。
后退按钮实际上没有完成您的活动,finish()
立即调用onDestory()
方法,而后退按钮则没有。
当按下后退按钮时,调用onStop()
方法,但系统可能会延迟onDestory()
方法调用,这样可以通过更便宜的系统恢复活动(在资源中)而不是完全重启。
寿命周期: http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
完成(): http://developer.android.com/reference/android/app/Activity.html#finish()
答案 1 :(得分:2)
当您需要在特定时刻立即结束Activity
时,您使用finish()
方法完成Activity
课程。如果按后退按钮,您将自动浏览lifecycle(onPause()
,onStop()
,然后onDestroy())
。
答案 2 :(得分:2)
使用完成的一个原因是您使用
开始活动void android.app.Activity.startActivityForResult(Intent intent, int requestCode)
在这种情况下,你不要回到使用另一个startActivity启动它的Activity,而是使用finish
答案 3 :(得分:1)
在您执行与活动有关的操作后,将调用public void finish()
在您的活动完成后调用此应该是 关闭。 ActivityResult会传播回给你的人 通过onActivityResult()。
finish()
来终止您的活动实例。之后,您无法使用该活动。所以,只需致电finish()
即可终止您的活动。
如果按后退按钮,它将自动调用finish()
以终止活动。它将通过活动lifecycle(onPause()
,onStop()
,最后onDestroy()
)
调用finish()的一个原因是,如果不调用它,当您浏览活动时,所有活动都将添加到backstack中。所以当你回去时,你必须回过头来看看这些活动。因此,例如,当您单击后退按钮时,它会直接杀死活动,并将从后台堆栈中删除。
答案 4 :(得分:1)
后退按钮将您带到堆栈中的最后一个活动,而finish()
会破坏当前活动。您可以在不希望用户返回的活动上调用finish()
。示例:LoginActivity