Android:什么时候用finish()结束课程?

时间:2012-10-16 10:01:41

标签: java android class activity-finish

我经常看到以finish()结尾的类的示例,但绝对不总是如此。我的问题是你何时应该以{{1​​}}结束课程?它究竟做了什么,用后退按钮结束一个类并用finish()结束它有什么区别?

提前致谢!

5 个答案:

答案 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课程。如果按后退按钮,您将自动浏览lifecycleonPause()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()以终止活动。它将通过活动lifecycleonPause()onStop(),最后onDestroy()

调用finish()的一个原因是,如果不调用它,当您浏览活动时,所有活动都将添加到backstack中。所以当你回去时,你必须回过头来看看这些活动。因此,例如,当您单击后退按钮时,它会直接杀死活动,并将从后台堆栈中删除。

答案 4 :(得分:1)

后退按钮将您带到堆栈中的最后一个活动,而finish()会破坏当前活动。您可以在不希望用户返回的活动上调用finish()。示例:LoginActivity