今天在处理一个播放器全屏的bug时,发现全屏切换时触发了上一个activity的生命周期,最终发现问题在主题的windowIsTranslucent这个属性上。先看下demo中的效果
其中A是启动Activity,B是有windowIsTranslucent属性为true的activity,需要注意的点有几个
1.启动B后,A的生命周期只走了onPause,而没有走onStop
2.在B页面切换横屏时,A的生命周期也同时触发了
3.A的生命周期为onStop,onStart,onResume,onPause
我们在学习生命周期的时候,区分onStop和onPause的调用时机是,有一个比较通俗的说说法就是如果B启动后A完全不可见,则触发onPause及onStop。如果B启动后A依然可以被被看到,比如启动了一个DialogActivity,则只会触发onPause。
以此看来加上的windowIsTranslucent=true属性的activity在处理时可以被当做一个DialogActivity,不管A是否可以被看到