【发布时间】:2014-04-26 19:57:14
【问题描述】:
我尝试了以下代码
Log.d("t20", "First here");
startActivity(new Intent(this, AnotherActivity.class));
finish();
Log.d("t20", "Then Here");
日志输出:
First here
Then Here
为什么要打印第二条日志消息?
执行应该在finsh()停止吧?
【问题讨论】:
我尝试了以下代码
Log.d("t20", "First here");
startActivity(new Intent(this, AnotherActivity.class));
finish();
Log.d("t20", "Then Here");
日志输出:
First here
Then Here
为什么要打印第二条日志消息?
执行应该在finsh()停止吧?
【问题讨论】:
致电finish() 后,您的活动不会立即完成,而只是计划“完成”。所以代码的执行将继续。要检查是否在 Activity 实例上调用了 finish(),您可以调用 Activity.isFinishing() 方法。
来自文档:
Check to see whether this activity is in the process of finishing, either because you
called finish() on it or someone else has requested that it finished.
所以您的代码示例将如下所示:
Log.d("t20", "First here");
startActivity(new Intent(this, AnotherActivity.class));
finish();
if (!isFinishing()) {
Log.d("t20", "Then Here");
}
【讨论】:
当在一个activity上调用finish()时,onDestroy()方法会被执行,这个方法可以做如下事情:
【讨论】:
不,完成不是中止。该函数将继续执行,当它返回到运行事件循环的 Android 框架内的 Looper 时,它将开始取消初始化序列(调用 onPause、onStop 和 onDestroy)。
【讨论】: