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,运行程序后,就全透明了,看得见背景下的所有东西可以却都操作无效。


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

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

onPause和onStop的区别

onPause 用于由一个Activity转到另一个Activity、设备进入休眠状态(屏幕锁住了)、或者有dialog弹出时 onStop 用于不可见的Activity(有对话框弹出时,这时底下的...
  • LAMP_zy
  • LAMP_zy
  • 2012年06月29日 22:30
  • 52259

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

看到网上很多人说弹出Dialog时只会调用onPause()而不会调用onStop(),可是自己做了下实验,此时既不会调用onPause()也不会调用onStop()。。。 大概扫了下官方文档,tra...
  • u014285517
  • u014285517
  • 2015年07月28日 12:00
  • 4379

activity生命周期的onPause和onStop

搞了这么长时间的android开发,却对一些基础的东西一直模棱两可。。。就比如这个onPause和onStop。如果从一个界面,跳到另一个界面,那么是调用哪个呢? 经过我的实验。搞清楚了。onPaus...
  • howlaa
  • howlaa
  • 2014年05月28日 23:21
  • 13033

Activity的onStop和onPause的调用时机

Activity的onStop和onPause的调用时机 我们先看一张一张经典的生命周期流程图: 由上图可知,onPause的调用是“Another activity come...
  • baidu_27196493
  • baidu_27196493
  • 2017年06月10日 20:09
  • 913

Android onPause和onSaveInstanceState的区别

onPause在Activity部分不可见的时候被调用,onSaveInstanceState在需要空出内存给当前Activity的时候执行。onSaveInstanceState有时候在onPaus...
  • swimmer2000
  • swimmer2000
  • 2015年04月03日 15:31
  • 1743

Android onPause和onStop的比较

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

Dialog 不会触发 onPause

一直以来一直以为Activity中Dialog的出现为触发onPause生命周期函数。 其实不然。如果不信的话可以自己写个小demo试试。(例如,在onCreate中create一个Dialog,d...
  • joeylittlefat
  • joeylittlefat
  • 2011年09月20日 16:53
  • 4236

Android Activity onPause ,onStop ,onDestroy方法不一定执行

由于机型的关系,当你直接从home界面杀死应用,Activity的onPause,onStop ,onDestroy方法可能不会执行,如三星有的手机就会直接杀死进程,导致onPause等方法不执行。...
  • liweicai137
  • liweicai137
  • 2017年05月01日 21:55
  • 744

Activity onStop方法调用时机

Called when youare no longer visible to the user. 官网的解释是:当对用户不可见时调用   1.home键返回,锁屏,关闭界面肯定会调用onSto...
  • limushan
  • limushan
  • 2016年09月08日 11:18
  • 1594
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android什么时候只会调用onPause()而不会调用onStop()?
举报原因:
原因补充:

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