首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >完成不停止活动代码执行

完成不停止活动代码执行
EN

Stack Overflow用户
提问于 2014-03-20 06:27:09
回答 3查看 2.3K关注 0票数 4

我尝试了以下代码

代码语言:javascript
复制
Log.d("t20", "First here");
startActivity(new Intent(this, AnotherActivity.class));     
finish();
Log.d("t20", "Then Here");

日志输出:

代码语言:javascript
复制
First here
Then Here

为什么打印第二条日志消息?应该在finsh()停止执行,对吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-20 06:29:53

不,结束不是失败。该函数将继续,当它返回到运行事件循环的Android框架中的Looper时,它将开始重新初始化序列(调用onPause、onStop和onDestroy)。

票数 9
EN

Stack Overflow用户

发布于 2014-03-20 08:09:41

调用finish()后,您的活动不会立即完成,而只是计划“完成”。所以代码的执行将继续进行。要检查活动实例上是否调用了finish(),可以调用Activity.isFinishing()方法。

从医生那里:

代码语言:javascript
复制
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. 

所以您的代码示例将如下所示:

代码语言:javascript
复制
Log.d("t20", "First here");
startActivity(new Intent(this, AnotherActivity.class));     
finish();
if (!isFinishing()) {
    Log.d("t20", "Then Here");
}
票数 4
EN

Stack Overflow用户

发布于 2014-03-20 06:37:47

在对活动调用finish()时,将执行onDestroy()方法,该方法可以执行以下操作:

  1. 取消任何活动正在管理的对话框。
  2. 关闭活动正在管理的所有游标。
  3. 关闭任何打开的搜索对话框
  4. 而且,onDestroy()不是析构函数。它并不能真正摧毁物体。它只是一种基于某种状态的方法。因此,您的实例仍然处于活动状态,并且非常好*在超类的onDestroy()运行和returns.Android保持进程在周围,以防用户希望重新启动应用程序之后,这将使启动阶段更快。该进程将不会做任何事情,如果需要回收内存,该进程将被终止。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22525064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档