博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
横竖屏切换时候Activity的生命周期
阅读量:6551 次
发布时间:2019-06-24

本文共 1682 字,大约阅读时间需要 5 分钟。

hot3.png

给大家分析一下他切换时具体的生命周期是怎么样的:

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

crtl+f12切换成横屏时

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"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次但多打印了一行onConfigChanged

3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

 

总结一下整个Activity的生命周期

补充一点,当前Activity产生事件弹出Toast和AlertDialog的时候Activity的生命周期不会有改变

Activity运行时按下HOME键(跟被完全覆盖是一样的):onSaveInstanceState --> onPause --> onStop       onRestart -->onStart--->onResume

Activity未被完全覆盖只是失去焦点:onPause--->onResume

转载于:https://my.oschina.net/u/573470/blog/128881

你可能感兴趣的文章
SQL练习题
查看>>
该如何用好Automator中的文件夹操作
查看>>
pdf转换成word转换器免费版
查看>>
windows环境软件下载
查看>>
spring boot jpa mysql 解决中文乱码
查看>>
oh-my-zsh小记
查看>>
用JAX-WS开发WebService服务端并用tomcat发布Web服务
查看>>
数据库事务并发与锁详解
查看>>
Spring annotation 、Spring 注解、注册注解处理器
查看>>
RHEL DNS
查看>>
python print
查看>>
配置SSH 安全管理 Cisco Switch
查看>>
Voice Lab 3-IPhone Features & CME Features
查看>>
w10添加右键菜单 cmd.exe
查看>>
CharSequence与String的区别
查看>>
RHEL6.4+hadoop 1.2.1集群配置
查看>>
从 VMware vCenter Server 5.5 中过期的 SSL 证书进行恢复
查看>>
WSFC CNO与VCO误删恢复
查看>>
openstack安装配置—— 实例启动(双网络模型)
查看>>
如何写好技术简历 —— 实例、模板及工具 -- delete
查看>>