【发布时间】:2011-12-30 12:07:40
【问题描述】:
在调用finish()后不立即退出Activity是否方便?
(换句话说,为什么这个方法没有立即从设计中退出活动?)
http://developer.android.com/reference/android/app/Activity.html#finish()
更新
当我说立即时,我的意思是,您将及时调用 finish(),当然,使用保存实例包进行清理、onStop 和 onDestroy 方法不算在内。
看一个例子我在说什么,这里是sn-p
onCreate(Bundle savedInstance){
// code executed
if(somecondition){
finish();
}
// code which shouldn't be executed
}
问题是,为什么条件之后的代码在结束活动之前也完成了,为什么finish() 调用没有立即停止处理
【问题讨论】:
-
立即是什么意思?
-
它当然是设计使然 - 当您调用
Activity#finish()时,Activity遵循其生命周期,暂停、停止和销毁您的活动 - 除非您在之后清理您自己仍然可以在其他线程中运行垃圾或将内容发回 UI 线程。 -
@Flo 我的意思是在调用此方法后立即跳过当前进程块中的其余代码
-
@Jens 我明白这一点,请查看我的问题的更新,看看我在说什么
-
嗯,是的,但是
finish()不像普通 Java 中的System#exit(int)- 它只通知 Android 当前活动应该结束并退出 - 让它做你想做的事将不得不抛出异常或杀死虚拟机——这都是令人讨厌且毫无意义的事情。
标签: java android activity-finish