首页 > 其他分享 >横竖屏切换时候Activity的生命周期

横竖屏切换时候Activity的生命周期

时间:2022-12-09 16:38:09浏览次数:43  
标签:onResume 生命周期 -- 横竖 onStart onPause Activity


横屏切换竖屏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

标签:onResume,生命周期,--,横竖,onStart,onPause,Activity
From: https://blog.51cto.com/u_15907753/5926220

相关文章

  • IOS之【ios程序的生命周期】
    文件#import“OneAppDelegate.h"#import“OneViewController.h"@implementation-(void)dealloc{_windowrelease];[_viewControllerrelease];superdealloc];}#prag......
  • 每天一点基础K8S--K8S中的pod生命周期管理--健康性探测
    健康性探测健康性探测可主要分为:startupProbe、livenessProbe和readinessProbe用于探测的三种探针:ExecAction:在容器中执行一个命令,返回码为0表示成功;TCPSocketActio......
  • 安卓的启动activity
    一、关于安卓的启动1、安卓的一个主要的xml配置文件是:AndroidManifest.xml该文件放在应用的根目录,那么具体根目录是哪里需要根据各个项目去确定(不是工程的根目录,可能是对......
  • es对日志数据进行索引生命周期管理
    前言在采用ELK分布式日志采集平台的时候,一般都会采用ES来存储采集的日志信息。日志信息一般都是持续增长的,是典型的时序数据。如果不对采集的日志数据做生命周期管理,很容易......
  • vue父子组件生命周期执行顺序
    父子组件生命周期执行顺序(同步组件的情况下)更新过程父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->......
  • Servlet_生命周期详解和Servlet_3.0注解配置
    Servlet_生命周期详解:1.被创建:执行init方法,只执行一次Servlet什么时候被创建?默认情况下,第一次被访问时,Servlet被创建可以配置执行Servlet的创建时机......
  • React的生命周期
    React的生命周期中有常用的和不常用的。常用的有:1constructor():完成了数据的初始化。注意:只要使用了constructor()就必须写super(),否则this指向会出错。-2render():re......
  • 客户生命周期流程设计
    需求:记录一个客户从注册到注销经历的各个生命周期节点,给与查询展示设计:1、生命周期节点分为以下几个流程:注册、授信、资料获取...(先开发部分流程,剩余用...表示)......
  • LLVM中指令的生命周期
    LLVM中指令的生命周期LLVM是一个复杂的软件。为了了解它的工作原理,人们可以采取几种方法,但都不简单。这里的目标是遵循“指令”在经过LLVM的多个编译阶段时的各种变化格......
  • Servlet_执行原理和servlet_生命周期方法
    Servlet_执行原理:执行原理:1.当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径2.查找web.xml文件,是否有对应的<url-pattern>标签内......