今天突然有人问到标题的问题。瞬间来了兴趣。居然还可以这么玩?查看了网上的介绍。原理上的东西都有。但是好多没有真正测试,都是一个乱写其他人转载,看样子他们也没测试啊。下面我就真正写一下这个程序。做一下总结:
一、实现原理:
图片显示是官方文档介绍,可以看到要调用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了
但是第二个页面是完全透明度。什么用?实际业务场景真的会用到吗