首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >安卓Activites的onPause()和onStop()有什么区别?

安卓Activites的onPause()和onStop()有什么区别?
EN

Stack Overflow用户
提问于 2012-02-14 03:09:28
回答 5查看 53.9K关注 0票数 163

在android文档中,http://developer.android.com/reference/android/app/Activity.html说“活动进入前台”将调用onPause(),而“活动不再可见”将调用onStop()

“活动显示在前台”和“活动不再可见”不是一样的吗?你能告诉我它们之间有什么区别吗?

EN

回答 5

Stack Overflow用户

发布于 2012-02-14 03:15:34

不,如果一些活动出现在前台,那并不一定意味着另一个活动是完全不可见的。考虑以下情况:

在这里,我们同时看到了这两个活动。具有字段的第一个活动被另一个活动遮挡,用户不能再与其交互。然而,它仍然是可见的,并具有所有由此产生的后果。

这就留下了一个问题,哪个活动被认为是完全不透明的并覆盖整个屏幕,哪个不是,这个决定是基于包含该活动的窗口。如果窗口具有标志windowIsFloatingwindowIsTranslucent,则认为该活动不会使底层内容不可见,否则会导致onStop()被调用。相关代码可以在com.android.server.am.ActivityRecord中找到

代码语言:javascript
复制
fullscreen = ent != null && !ent.array.getBoolean(
        com.android.internal.R.styleable.Window_windowIsFloating, false)
        && !ent.array.getBoolean(
        com.android.internal.R.styleable.Window_windowIsTranslucent, false);
票数 113
EN

Stack Overflow用户

发布于 2012-02-14 03:11:15

如果你仍然可以看到它的任何部分(进入前台的Activity不会占据整个屏幕,或者它有点透明),onPause()将被调用。如果您看不到它的任何部分,则将调用onStop()

例如,对话框**可能不会覆盖之前的整个Activity,此时将调用onPause()

**我在这里指的不是Android对话框,而是弹出的概念概念,它只遮挡了用户屏幕的一部分。添加此注释是为了根据下面@GMsoF的评论进行澄清

票数 44
EN

Stack Overflow用户

发布于 2012-02-14 03:13:29

处于前台意味着活动具有输入焦点。例如,一个活动可以是可见的,但部分地被具有焦点的对话框所遮挡。在这种情况下,将调用onPause(),而不是onStop()。当对话框消失时,将调用该活动的onResume()方法(而不是onStart())。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9266417

复制
相关文章

相似问题

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