首页
学习
活动
专区
圈层
工具
发布
30 篇文章
1
android横竖屏切换activity生命周期变化
2
Android:Service生命周期最全面解析
3
Android 面试官:简述一下 View 的绘制流程,这个都答不出来就别想拿Offer了
4
一文解决Android View滑动冲突
5
Android Handler机制11之Handler机制总结
6
android View层的绘制流程
7
深入理解 Android 消息机制原理
8
Android 7.0 中 Launcher 启动 Activity 过程
9
「细品源码」 Android 系统的血液:Handler
10
Android ListView 与 RecyclerView 对比浅析:缓存机制
11
深入理解Android插件化技术
12
Android组件化框架项目详解
13
《Android插件化技术——原理篇》
14
Android面试遇坎,我精选了这些题目与答案,你离大厂还有多远测试一下就知道!
15
史上最全的Android面试题集锦
16
Activity三问—猫眼真题
17
Android 面试黑洞——当我按下 Home 键再切回来,会发生什么?
18
笔记——JVM、DVM(dalvik)和ART之间的区别(二十)
19
ClassLoader解析(二):Android中的ClassLoader
20
Android类加载之PathClassLoader和DexClassLoader
21
用代码手把手教你使用MVVM
22
从构建工具看 Android APK 编译打包流程
23
《Android面试题思考与解答》2021年3月刊
24
《Android面试题思考与解答》2021年1月刊
25
Android MVVM模式入门
26
ViewModel三问—阿里真题
27
ANR 原理与实战技巧
28
你真的会用Retrofit2吗?Retrofit2完全教程
29
Android 进阶11:进程通信之 ContentProvider 内容提供者
30
Android:关于ContentProvider的知识都在这里了!

android横竖屏切换activity生命周期变化

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

下一篇
举报
领券