Activity生命周期以及切换横竖屏生命周期
2018-10-10 本文已影响0人
eliteTyc
Activity生命周期
- 正常启动的Activity的生命周期
- onCreate()->onStart()->onResume()->onPause()->onStop()->onDestroy()
仔细观察会发现activity的生命周期是对称的(这样很好记忆)
- onCreate()->onStart()->onResume()->onPause()->onStop()->onDestroy()
- 当一个正常启动后的Activity别还可见,但是不可操作时(比如弹出了一个对话框再activity之上,或者出现了一个透明的activity再原来的activity之上)
- 弹出对话框或上面添加一个透明activity->onPause()->关闭对话框或移除透明activity->onResume()
- Pause就是暂停的意思,就好比你看视频,点击了暂停按钮,视频停止了,不再继续播放,在安卓里面onPause就是失去焦点,对activity来说就是虽然你还能看见我,但是你不能对我进行操作了。Resume就是又获取了焦点,去掉了上方的遮挡当然能对activity进行操作啦
- 当一个正常启动的Activity切换到后台(当前Activity不可见),再切换回来(当前Activity又可见)
- 切换到后台->onPause()->onStop()->切换回来->onStart()->onResume()
- stop就是停止,相对activity来说就是停止对你的服务,activity被切换到后台,不可见了,start则是再次可见,就像你冲后台切换回来或者你从一个activity返回到之前打开的一个activity,有细心的人可能会发现为什么activity不可见为什么会调用onPause方法,你想想,这个activity都不可见了,你还能获取到他的焦点对他进行操作吗,当然不行了,所以当一个activity不可见的时候会先失去焦点再不可见,同时如果可见执行顺序应该是onStart()->onResume(),获取焦点又怎么到后面了?你想想如果界面都没看见,你就能点击了?可能吗?所以这个不能进行对称记忆。
附上官方声明周期图
activity生命周期.png横竖屏切换生命周期
横竖屏切换可以参考文章
https://blog.csdn.net/qq_36713816/article/details/80538467
最后补充一点,我们通过设置android:screenOrientation属性可以指定当前activity的屏幕方向。
android:screenOrientation="portrait" 纵向
android:screenOrientation="landscape" 横向