4

在调用后不立即退出 Activity 很方便,是否有任何特殊情况finish()

(换句话说,为什么这个方法没有立即从设计中退出活动?)

http://developer.android.com/reference/android/app/Activity.html#finish()

更新

当我立即说时,我的意思是,您会及时调用finish(),当然,使用保存实例包进行清理,onStop 和 onDestroy 方法不算在内。

看一个例子我在说什么,这里是片段

onCreate(Bundle savedInstance){
    // code executed
    if(somecondition){
        finish();
    }
    // code which shouldn't be executed
}

问题是,为什么条件之后的代码在结束活动之前也完成了,为什么finish()调用没有立即停止处理

4

5 回答 5

5

您不应该返回以防止执行以下代码:

if(somecondition){
    finish();
    return;
}
于 2011-12-30T19:44:50.110 回答
1

想象一下,您有一个 thread_0,其中有一个循环处理所有事件。

调用完成会添加一个新事件,但在 thread_0 处理该事件之前,该活动不会被终止。

于 2011-12-30T13:05:36.767 回答
0

需要检查的东西:您是否正在运行任何未完成的异步任务?

于 2011-12-30T12:45:02.760 回答
0

finish() 只是隐藏活动,但不会立即被杀死。当操作系统需要一些内存来运行其他应用程序或进程时,它可以在稍后被杀死。

于 2011-12-30T12:47:59.727 回答
0

我猜Android允许你在finish()之后保存一些数据。我认为取消也可能会伤害线程。在您的情况下,您可以使用 return;停止代码执行。

于 2011-12-30T19:41:01.220 回答