我尝试了以下代码
Log.d("t20", "First here");
startActivity(new Intent(this, AnotherActivity.class));
finish();
Log.d("t20", "Then Here");
日志输出:
First here
Then Here
为什么要打印第二条日志消息?
执行应该在finsh()
停止,对吗?
答案 0 :(得分:6)
不,结束不是中止。该函数将继续,当它返回到运行事件循环的Android框架内的Looper时,它将开始取消初始化序列(调用onPause,onStop和onDestroy)。
答案 1 :(得分:4)
致电finish()
后,您的活动将不会立即完成,但只是计划完成'。因此代码的执行将继续。要检查是否在Activity实例上调用了finish()
,您可以调用Activity.isFinishing()
方法。
来自docs:
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");
}
答案 2 :(得分:1)
在活动上调用finish()时,执行onDestroy()方法,此方法可以执行以下操作: