首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对isFinishing()的理解

对isFinishing()的理解
EN

Stack Overflow用户
提问于 2011-03-08 00:42:45
回答 3查看 41.5K关注 0票数 36

我在http://developer.android.com/reference/android/app/Activity.html上读了一篇关于http://developer.android.com/reference/android/app/Activity.html的安卓文档后,感到很困惑。

如果我在isFinishing()中调用onPause(),那么在以下3种情况下,isFinishing()调用的返回值是多少?

memory.

  • Activity被调用
  1. 活动是因为finish()被调用。
  2. 活动不在前台,而操作系统(而不是应用程序)正在将该活动(而不是应用程序)杀死,这是因为较低的finish()正在进入后台。

我确信,isFinishing()的结果在场景1中为真,在场景3中为false。

场景2怎么样?在场景2中,isFinishing()将返回true还是false?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-08 00:56:48

当操作系统处于前台时,您的活动不会被操作系统杀死。那就没道理了。

但是,如果由于用户切换到不同的应用程序而导致活动转到后台,那么在onPause()被处理之后,它可能会被杀死。因此,您可以在用户切换到新应用程序时获得isFinishing() == false,但随后应用程序就会被杀死。

如文档所述,将所有持久数据保存在onPause()中。不能保证调用onDestroy()

(顺便说一句,如果黛安介入并纠正我,我也不会感到惊讶。)

票数 27
EN

Stack Overflow用户

发布于 2016-06-15 11:07:16

如何调用onPause? 2种方式:活动转到后台,或者我们在某个地方调用finish()。如果活动转到后台,则isFinishing()为false。如果我们调用finish(),则isFinishing()为true。现在请看场景2:活动不在前台,由于内存不足,操作系统正在杀死活动(而不是应用程序)。一个活动会被杀死,所以它会在后台沉思,它会被暂停,所以onPause不会被调用。顺便说一句,一个活动是不能被杀死的,只有进程才能被杀死。

票数 1
EN

Stack Overflow用户

发布于 2020-02-07 18:30:44

isFinishing()在活动的所有方法中返回false,但onDestroy()除外。

有关更多信息,请将日志放入所有活动方法,如下所示

代码语言:javascript
复制
Log.i("onCreate",""+isFinishing);
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5227071

复制
相关文章

相似问题

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