Android什么时候只会调用onPause()而不会调用onStop()?

转载 2017年01月03日 10:19:16

看到网上很多人说弹出Dialog时只会调用onPause()而不会调用onStop(),可是自己做了下实验,此时既不会调用onPause()也不会调用onStop()。。。

大概扫了下官方文档,translucent(半透明) activity好像可以做到,试了下,果真可以。


至于为什么呢?让我们看下Activity生命周期(注:图片来自:Big.Nerd.Ranch.Guides.Android.Programming.The.Big.Nerd.Ranch.Guide.2nd.Edition):

可以看到要调用onPause()Activity必须Leavesforeground,查了下,好像是Activity必需离开Activity栈的栈顶,显然Dialog不是Activity,并不能使原来的Activity离开栈顶。

translucent(半透明) activity既满足使原来的Activity Leavesforeground,又保持visible,所以能有只会调用onPause()而不会调用onStop()的效果。

android设置Activity背景色为透明的2种方法

Android设置背景色为透明

方法一:

只要在配置文件内activity属性配置内加上

android:theme="@android:style/Theme.Translucent" 

就好了。

这样就调用了android的透明样式!

方法二:

先在res/values下建colors.xml文件,写入:
  
  <?xmlversion="1.0"encoding="UTF-8"?>
  
  <resources>
  
  <colorname="transparent">#9000</color>
  
  </resources>
  
  这个值设定了整个界面的透明度,为了看得见效果,现在设为透明度为56%(9/16)左右。
  
  再在res/values/下建styles.xml,设置程序的风格
  
  <?xmlversion="1.0"encoding="utf-8"?>
  
  <resources>
  
  <stylename="Transparent">
  
  <itemname="android:windowBackground">@color/transparent</item>
  
  <itemname="android:windowIsTranslucent">true</item>
  
  <itemname="android:windowAnimationStyle">@+android:style/Animation.Translucent</item>
  
  </style>
  
  </resources>
  
  最后一步,把这个styles.xml用在相应的Activity上。即在AndroidManifest.xml中的任意<activity>标签中添加
  
  android:theme="@style/transparent"
  
  如果想设置所有的activity都使用这个风格,可以把这句标签语句添加在<application>中。
  
  最后运行程序,哈哈,是不是发现整个界面都被蒙上一层半透明了。最后可以把背景色#9000换成#0000,运行程序后,就全透明了,看得见背景下的所有东西可以却都操作无效。


相关文章推荐

Activity onStop方法调用时机

Called when youare no longer visible to the user. 官网的解释是:当对用户不可见时调用   1.home键返回,锁屏,关闭界面肯定会调用onSto...

Activity的onStop和onPause的调用时机

Activity的onStop和onPause的调用时机 我们先看一张一张经典的生命周期流程图: 由上图可知,onPause的调用是“Another activity come...

Android Activity onPause与onStop

随笔记录: 1.在Activity转入后台运行时,一定会运行onPause。当被新的Activity完全覆盖时,会执行onStop。...

Android什么时候只会调用onPause()而不会调用onStop()完全解析?

今天突然有人问到标题的问题。瞬间来了兴趣。居然还可以这么玩?查看了网上的介绍。原理上的东西都有。但是好多没有真正测试,都是一个乱写其他人转载,看样子他们也没测试啊。下面我就真正写一下这个程序。做一下总...

unity3d开发android小游戏版本版本更新后自动安装功能的实现

最近在学习android的知识,因为功能的需要,unity3d 要和android交互。最近公司的项目中遇到了unity3d 开发的app需要更新和自动安装的功能,但是使用unity3d是实现不了这样...

Android-->最全的启动第三方APP,应用程序(按需启动,历史启动)

在很多地方都需要启动其他的程序, 调起第三方应用;比如:桌面程序,必须的就是启动第三方应用了.如果你很细心的话, 应该注意到一点: 在桌面程序中点击启动第三方应用, 如果程序还没启动过, 就会重新创建...
  • angcyo
  • angcyo
  • 2016年11月10日 16:05
  • 1364

Android的Activity什么时候会调用onCreate()而不调用onStart()?

Android的Activity什么时候会调用onCreate()而不调用onStart()?这是一道面试题。目前网上有关资料不多,就只有一篇知乎文章: https://www.zhihu.com/q...

Android onPause和onStop的比较

分析 onPause():Activity失去焦点,但仍然可见。 onStop():Activity在后台,不可见(完全被另一个Activity挡住,或者程序后台运行)。 几种情况 锁屏的时候,会依次...

Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载?

Android Activity为什么要细化出onCreate、onStart、onResume、onPause、onStop、onDesdroy这么多方法让应用去重载? 原创链接:http://b...

Android之什么时候调用onSaveInstance方法的时候(为什么按Home键盘会调用,按Back不调用)

1、函数介绍 1)、onCreate(Bundle savedInstanceState) 方法 Activity 创建时回调 : 该方法会自动传入一个 Bundle 对象, 该 Bundle 对象就...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android什么时候只会调用onPause()而不会调用onStop()?
举报原因:
原因补充:

(最多只允许输入30个字)