当前位置: 首页 > news >正文

【Android】横竖屏切换时生命周期变化

概述:

当横竖屏切换时,可能会引起Activity的重建,以及一些其他的方法调用,用一个demo看看实际的方法调用情况

示例代码:

package com.example.screenswitchtestimport android.content.Intent
import android.content.res.Configuration
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.PersistableBundle
import android.util.Logclass MainActivity : AppCompatActivity() {companion object {const val TAG = "MainActivity"}override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)Log.w(TAG, "onCreate")}override fun onStart() {super.onStart()Log.w(TAG, "onStart")}override fun onResume() {super.onResume()Log.w(TAG, "onResume")}override fun onPause() {super.onPause()Log.w(TAG, "onPause")}override fun onStop() {super.onStop()Log.w(TAG, "onStop")}override fun onDestroy() {super.onDestroy()Log.w(TAG, "onDestroy")}override fun onRestart() {super.onRestart()Log.w(TAG, "onRestart")}override fun onNewIntent(intent: Intent?) {super.onNewIntent(intent)Log.w(TAG, "onNewIntent")}override fun onSaveInstanceState(outState: Bundle) {super.onSaveInstanceState(outState)Log.w(TAG, "onSaveInstanceState 1 args")}override fun onSaveInstanceState(outState: Bundle, outPersistentState: PersistableBundle) {super.onSaveInstanceState(outState, outPersistentState)Log.w(TAG, "onSaveInstanceState 2 args")}override fun onRestoreInstanceState(savedInstanceState: Bundle) {super.onRestoreInstanceState(savedInstanceState)Log.w(TAG, "onRestoreInstanceState 1 args")}override fun onRestoreInstanceState(savedInstanceState: Bundle?,persistentState: PersistableBundle?) {super.onRestoreInstanceState(savedInstanceState, persistentState)Log.w(TAG, "onRestoreInstanceState 2 args")}override fun onConfigurationChanged(newConfig: Configuration) {super.onConfigurationChanged(newConfig)Log.w(TAG, "onConfigurationChanged")}
}

不同配置下的回调情况:

不配置configChanges

启动Activity并切换到横屏
在这里插入图片描述

配置configChanges为orientation

启动Activity并切换到横屏
在这里插入图片描述

配置configChanges为orientation|screenSize

启动Activity并切换到横屏
在这里插入图片描述

结论:

  1. 不设置configChanges或仅设置为orientation,都不会调用onConfigurationChanged,而是重建Activity触发生命周期回调。
  2. 在这个重建生命周期过程中,会在onDestroy前执行onSaveInstanceState,在下一次onResume之前执行onRestoreInstanceState。
  3. 当设置为orientation|screenSize时,会调用onConfigurationChanged,并且不再重建Activity,不触发生命周期回调。
http://www.dtcms.com/a/521486.html

相关文章:

  • 购物网站建设 成都那家公司做网站比较好
  • 网站开发合同注意网站怎么搭建
  • SpringBoot-Web开发之嵌入式容器
  • 网站整站建设廊坊企业网站服务
  • 做门户网站的公司有哪些论坛做视频网站有哪些
  • OBS弹幕助手下载,OBS弹幕助手安装使用教程,OBS语音读弹幕,OBS语音助手下载地址
  • 百度网站推广外包织梦的网站收录不好
  • 欢迎访问中国建设银行网站个人客户鹤壁专业做网站多少钱
  • wordpress 添加图片水印seo网络优化是做什么的
  • Spring Boot Actuator:打造高效监控系统
  • 凡客衬衫官方网站东莞五金网站建设
  • 怎么找网站建设宁夏交通厅建设局网站
  • 使用 n8n 构建自动化科技新闻速览工作流:从 RSS 到 AI 摘要生成与文件存储
  • mysy配置C++
  • 做html网站模板咸阳市城市建设管理局网站
  • 做英文网站有哪些网站建设必须买主机吗
  • 深圳做小程序网站开发服装设计效果图
  • 公司网站首页图片素材台州网站建设公司
  • 项目——基于C/S架构的预约系统平台 (1)
  • 机器学习预测波动率辅助ETF动态止损边界设定
  • 搭建网站一条龙柳江网站开发
  • 网站建设木马科技做美妆网站的关键词
  • 区块链的专业名字从基础到应用​​,从​​技术到生态
  • php个人网站源码带音乐如何去国外网站看内容
  • 关于我们 About Techub News
  • 大腾智能PDM在华为云生态中的应用实践——旭派锂能研发管理数字化转型
  • 椭圆曲线密码学的效率核心:单标量与多标量乘法详解
  • 期货看盘和下单简要说明
  • c2c网站系统芜湖哪家公司做网站不错
  • 网站做cdn怎么弄如何去掉wordpress作者链接