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

一、实现原理:

图片显示是官方文档介绍,可以看到要调用onPause()Activity必须Leavesforeground,查了下,好像是Activity必需离开Activity栈的栈顶,以上说法是别人的介绍。复制来的。

二、FirstAcitvity 通过第一个页面实现。

创建新的程序。命名为FirstActivity。


程序在启动的时候,执行的生命周期是:

FirstActivity---onCreate

FirstActivity---onStart

FirstActivity---onResume

锁屏执行的生命周期是:

 FirstActivity---onPause

FirstActivity---onStop

进入后台的快捷键操作执行生命周期:

FirstActivity---onPause

FirstActivity---onStop

好多人介绍当弹出Dialog 的时候可以出现标题的效果。

点击FirstActivity 的 弹出dialog按钮。弹出dialog.


发现 7个主要生命周期,一个也不走。根本没有效果。所以网上好多人根本没测试过。只是一味的转载。发现单个页面似乎实现不大可能!


三、通过SecondActivity来辅助实现。

新建Activity,命名为SecondActivity .

    因为在Activity的跳转时候也会执行这个这些生命周期。所以新建第二个页面,让他从第一个页面Intent过来。首先执行正常流程:点击FirstActivity页面按钮从FirstActivity跳转到SecondActivity.执行生命周期:

FirstActivity---onPause
 SecondActivity---onCreate
 SecondActivity---onStart
 SecondActivity---onResume
 FirstActivity---onStop

发现此时依旧没有实现效果。

解决方案如下:

   修改 AndroidManifest.xml中SecondAcitvity属性。

方案1:添加  android:theme="@android:style/Theme.Dialog" 。将Activity修改为Dialog样式。

效果:


生命周期执行过程:

FirstActivity---onPause
 SecondActivity---onCreate
 SecondActivity---onStart
SecondActivity---onResume

效果实现Ok了

方案2 :修改 AndroidManifest.xml中SecondAcitvity属性。android:theme="@android:style/Theme.Translucent" 

生命周期执行过程:

FirstActivity---onPause
 SecondActivity---onCreate
 SecondActivity---onStart
SecondActivity---onResume

效果实现Ok了

但是第二个页面是完全透明度。什么用?实际业务场景真的会用到吗







Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐