我尝试了以下代码
Log.d("t20", "First here");
startActivity(new Intent(this, AnotherActivity.class));
finish();
Log.d("t20", "Then Here");日志输出:
First here
Then Here为什么打印第二条日志消息?应该在finsh()停止执行,对吗?
发布于 2014-03-20 06:29:53
不,结束不是失败。该函数将继续,当它返回到运行事件循环的Android框架中的Looper时,它将开始重新初始化序列(调用onPause、onStop和onDestroy)。
发布于 2014-03-20 08:09:41
调用finish()后,您的活动不会立即完成,而只是计划“完成”。所以代码的执行将继续进行。要检查活动实例上是否调用了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");
}发布于 2014-03-20 06:37:47
在对活动调用finish()时,将执行onDestroy()方法,该方法可以执行以下操作:
https://stackoverflow.com/questions/22525064
复制相似问题