横竖屏切换时候Activity的生命周期的总结
来源:互联网 发布:指南针软件下载免费版 编辑:程序博客网 时间:2024/05/16 13:59
1、新建一个Activity,并把各个生命周期打印出来
2、运行Activity,得到如下信息
onCreate–>
onStart–>
onResume–>
3、按crtl+f12切换成横屏时
onSaveInstanceState–>
onPause–>
onStop–>
onDestroy–>
onCreate–>
onStart–>
onRestoreInstanceState–>
onResume–>
4、再按crtl+f12切换成竖屏时,发现打印了两次相同的log
onSaveInstanceState–>
onPause–>
onStop–>
onDestroy–>
onCreate–>
onStart–>
onRestoreInstanceState–>
onResume–>
onSaveInstanceState–>
onPause–>
onStop–>
onDestroy–>
onCreate–>
onStart–>
onRestoreInstanceState–>
onResume–>
5、修改AndroidManifest.xml,把该Activity添加 Android:configChanges=”orientation”,执行步骤3
onSaveInstanceState–>
onPause–>
onStop–>
onDestroy–>
onCreate–>
onStart–>
onRestoreInstanceState–>
onResume–>
6、再执行步骤4,发现不会再打印相同信息,但多打印了一行onConfigChanged
onSaveInstanceState–>
onPause–>
onStop–>
onDestroy–>
onCreate–>
onStart–>
onRestoreInstanceState–>
onResume–>
onConfigurationChanged–>
7、把步骤5的android:configChanges=”orientation” 改成 android:configChanges=”orientation|keyboardHidden”,执行步骤3,就只打印onConfigChanged
onConfigurationChanged–>
8、执行步骤4
onConfigurationChanged–>
onConfigurationChanged–>
总结:
1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置Activity的android:configChanges=”orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges=”orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法
总结一下整个Activity的生命周期
补充一点,当前Activity产生事件弹出Toast和AlertDialog的时候Activity的生命周期不会有改变
Activity运行时按下HOME键(跟被完全覆盖是一样的):onSaveInstanceState –> onPause –> onStop onRestart –>onStart—>onResume
Activity未被完全覆盖只是失去焦点:onPause—>onResume
- 横竖屏切换时候Activity的生命周期的总结
- 横竖屏切换时候Activity的生命周期的总结
- 横竖屏切换时候Activity的生命周期的总结
- 横竖屏切换时候Activity的生命周期的总结
- 横竖屏切换时候Activity的生命周期的总结
- 横竖屏切换时候Activity的生命周期的总结
- 横竖屏切换时候Activity的生命周期的总结
- 横竖屏切换时候Activity的生命周期
- 横竖屏切换时候Activity的生命周期
- 横竖屏切换时候Activity的生命周期
- 横竖屏切换时候activity的生命周期
- 横竖屏切换时候Activity的生命周期
- 横竖屏切换时候Activity的生命周期
- 横竖屏切换时候Activity的生命周期
- 横竖屏切换时候Activity的生命周期
- 横竖屏切换时候Activity的生命周期
- 横竖屏切换时候Activity的生命周期
- 横竖屏切换时候Activity的生命周期
- 61. Rotate List
- 计算下面数列的和值。 1/3+3/5+5/7+....+97/99
- 如果一个正整数等于除它本身之外其他所有除数之和,就称之为完全数。例如:6是完全数,* 因为6 = 1+2+3;下一个完全数是28 = 14+7+4+2+1。 10000以下的完全数有四个
- RabbitMQ
- leetcode 2. Add Two Numbers
- 横竖屏切换时候Activity的生命周期的总结
- Matlab编程与数据类型 -- 出错处理语句try/catch/end
- 给定输入的字符串,将字符串中的单词顺序颠倒,但要保持单词的字符顺序。
- MySQL的初步使用(2)———SQL语句DRL详解
- Building a Space Station
- CSS盒子模型各属性层级及基础知识
- 浅析java中 == 和equals的区别
- deamon守护进程
- MPI Maelstrom POJ 1502