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

Android横竖屏切换configChanges=“screenSize|orientation“避免activity销毁重建,Kotlin

Android横竖屏切换configChanges="screenSize|orientation"避免activity销毁重建,Kotlin

 

如果不在Androidmanifest.xml设置activity的:

android:configChanges="screenSize|orientation"

那么,每次横竖屏切换activity都会重新走onCreate() ... onDestory()生命周期,即销毁重建。如果设置了上面的配置后,每次横竖屏切换,activity只是回调:

    override fun onConfigurationChanged(newConfig: Configuration) {super.onConfigurationChanged(newConfig)}

而不再走或触发activity的创建-消耗重的生命周期。

import android.content.res.Configuration
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import java.util.UUIDconst val ITEM_COUNT = 300class MainActivity : AppCompatActivity() {private var mAdapter: MyAdapter? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)Log.d("fly", "onCreate")setContentView(R.layout.activity_main)val rv = findViewById<RecyclerView>(R.id.rv)val layoutManager = GridLayoutManager(this, 3)rv.layoutManager = layoutManagermAdapter = MyAdapter()rv.adapter = mAdapter}override fun onDestroy() {super.onDestroy()Log.d("fly", "onDestroy")}class MyAdapter : RecyclerView.Adapter<MyVH> {private var mList = mutableListOf<MyItem>()constructor() {val list = mutableListOf<MyItem>()for (i in 0 until ITEM_COUNT) {val item = MyItem(i)item.data = 0Litem.change = falselist.add(item)}mList = list}override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyVH {val view = LayoutInflater.from(parent.context).inflate(android.R.layout.simple_list_item_2, parent, false)return MyVH(view)}override fun getItemCount(): Int {return mList.size}override fun onBindViewHolder(holder: MyVH, position: Int) {holder.text1.text = "pos=${mList[position].pos}"holder.text2.text = "data=${mList[position].data}"}}class MyVH(itemView: View) : RecyclerView.ViewHolder(itemView) {val text1: TextView = itemView.findViewById(android.R.id.text1)val text2: TextView = itemView.findViewById(android.R.id.text2)}class MyItem {var pos = 0var data = 0Lvar contentId = UUID.randomUUID()var change = falseconstructor(pos: Int) {this.pos = pos}constructor() : this(0) {}}override fun onConfigurationChanged(newConfig: Configuration) {super.onConfigurationChanged(newConfig)Log.d("fly", "onConfigurationChanged")}
}

启动后,滑动到pos=30:

f96ca09c91714b89945afdf9645267e9.png

 

横竖屏切换,可以看到,Android自动在切换后把位置滚动到pos=30,无须recycleview再做滚动计算和调整:

cfd197bf59f54607add75828fb46765f.png

 

日志:

ab6d4d33488e4076af7c8fc2e1218fad.png

 

 

 

Android重写onConfigurationChanged规避横竖屏切换时候重新进入onCreate生命周期-CSDN博客文章浏览阅读2.1k次。Android重写onConfigurationChanged规避横竖屏切换时候重新进入onCreate生命周期Android系统内在的机制,当activity在横竖屏切换时候,会强制重新开始进入activity的生命周期onCreate,在有些特殊的场景,开发者不希望重新进入onCreate生命周期,那么,可以通过重写Android的onConfigurationChanged规避。_onconfigurationchangedhttps://blog.csdn.net/zhangphil/article/details/50607742

 

相关文章:

Android横竖屏切换configChanges=“screenSize|orientation“避免activity销毁重建,Kotlin

Android横竖屏切换configChanges"screenSize|orientation"避免activity销毁重建&#xff0c;Kotlin 如果不在Androidmanifest.xml设置activity的&#xff1a; android:configChanges"screenSize|orientation" 那么&#xff0c;每次横竖屏切换activity都会…...

【C语言基础】:操作符详解(二)

文章目录 操作符详解一、上期扩展二、单目操作符三、逗号表达式四、下标访问[]、 函数调用()五、结构成员访问操作符六、操作符的属性&#xff1a;优先级、结合性1. 优先级2. 结合性 操作符详解 上期回顾&#xff1a;【C语言基础】&#xff1a;操作符详解(一) 一、上期扩展 …...

模型训练基本结构

project_name/ │ ├── data/ │ ├── raw/ # 存放原始数据 │ ├── processed/ # 存放预处理后的数据 │ └── splits/ # 存放数据集划分&#xff08;训练集、验证集、测试集等&#xff09; │ ├── noteboo…...

Redis 数据结构详解:底层实现与高效使用场景

String&#xff08;字符串&#xff09; 底层实现细节&#xff1a; 动态字符串&#xff08;SDS&#xff09;: SDS相比于C语言的原生字符串&#xff0c;提供了自动内存管理和预分配机制。当字符串长度增加时&#xff0c;SDS会预先分配额外的空间&#xff0c;以减少内存重新分配…...

Vue2:router-link的replace属性

一、情景说明 我们在用浏览器访问网站的时候 知道浏览器会记录访问的历史路径&#xff0c;从而&#xff0c;可以退回到之前的页面 那么&#xff0c;Vue项目中的路由组件&#xff0c;通过router-link跳转&#xff0c;也是可以退回的 这里&#xff0c;我们用replace来屏蔽退回的…...

普中51单片机(DS18B20温度传感器)

DS18B20温度传感器原理 内部结构 64位(激)光刻只读存储器 光刻ROM中的64位序列号是出厂前被光刻好的&#xff0c;它可以看作是该DS18B20的地址序列号。64位光刻ROM的排列是&#xff1a;开始8位&#xff08;28H&#xff09;是产品类型标号&#xff0c;接着的48位是该DS18B20自身…...

2.23C语言学习

P1480 A/B Problem 高精度数除以非高精度数 #include<bits/stdc.h> long long b[66660],c[66660],sum0; char a[66660]; int n; int main(){scanf("%s",a);scanf("%d",&n);int lenstrlen(a);for(int i1;i<len;i){b[i]a[i-1]-0;}for(int i1;…...

origin/master master

这里实际上有三件事&#xff1a;origin master是两件事&#xff0c;origin/master一件事。共计三件事。 两个分支&#xff1a; master 是一个本地分支 origin/master是远程分支&#xff08;它是名为“origin” 的远程分支的本地副本&#xff0c;名为“master”&#xff09; 一个…...

【数据结构】时间复杂度与空间复杂度

目录 时间复杂度 空间复杂度 时间复杂度 算法的时间复杂度并不是指一个代码运行时间的快慢&#xff0c;因为在不同机器上运行的时间肯定不同&#xff0c;因此算法的时间复杂度指的是基本操作的执行次数&#xff0c;他是一个数学意义上的函数。这个函数并不是C语言中那种函数&…...

分别使用js与jquery写 单击按钮时出现内容 点击删除按钮不会再向下出现

HTML部分 <body><button id"btn">单击我</button><button id"delAll">删除所有事件</button><div id"test"></div> </bady>jQuery代码 <script type"text/JavaScript" src"…...

【Git】Git命令的学习与总结

本文实践于 Learn Git Branching 这个有趣的 Git 学习网站。在该网站&#xff0c;可以使用 show command 命令展示所有可用命令。你也可以直接访问网站的sandbox&#xff0c;自由发挥。 一、本地篇 基础篇 git commit git commit将暂存区&#xff08;staging area&#xff…...

前端工程化面试题 | 18.精选前端工程化高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

大公司的工程师是怎么废掉的...

大家好&#xff0c;我是砖一。 此文作者以嵌入式工程师为基本视角&#xff0c;细说了从初阶到高阶工程师的资质需求&#xff0c;并提示工程师职业道路上的陷阱。可供参考。 一&#xff0c;基础知识 一个嵌入式工程师&#xff0c;很多都是从51单片机或者STM32单片机开始&…...

将yolov8权重文件转为onnx格式并在c#中使用

yolo模型转ONNX 在yolov8中&#xff0c;我们将训练结果的.pt权重文件转换为onnx格式只需要使用ultralytics库中的YOLO类&#xff0c;使用pip安装ultralytics库&#xff0c;然后执行下面python代码 from ultralytics import YOLO# 加载YOLOv8模型 model YOLO("best.pt&q…...

在Spring Boot启动时禁止自动配置数据源相关的组件、@SpringBootApplication

一、SpringBootApplication(exclude {DataSourceAutoConfiguration.class})注解 在Spring Boot启动时禁止自动配置数据源相关的组件。 SpringBootApplication(exclude {DataSourceAutoConfiguration.class})注解的使用案例 这个注解通常应该写在微服务项目的主启动类上&…...

程序人生:不积跬步无以致千里

程序人生 癸卯年冬月&#xff0c;往渭南韩城&#xff0c;拜访司马迁祠。入门攀爬而上&#xff0c;至人有困乏之时&#xff0c;抬头现&#xff1a;高山仰止。归路下山&#xff0c;始现三官洞&#xff0c;遥想西汉时三官洞&#xff0c;出口处刻意再拜别&#xff1a;高山仰止。泪…...

通过二叉树例题深入理解递归问题

目录 引入&#xff1a; 例1&#xff1a;二叉树的前序遍历&#xff1a; 例2&#xff1a; N叉树的前序遍历&#xff1a; 例3&#xff1a;二叉树的最大深度&#xff1a; 例4&#xff1a;二叉树的最小深度 例5&#xff1a;N叉树的最大深度&#xff1a; 例6&#xff1a;左叶子…...

【Android 协程常见用法】

我们这里只讲解一下&#xff0c;协程在Android项目中常见用法&#xff0c;原理知识不在进行说明了。 依赖 lifecycleScope只能在Activity、Fragment中使用&#xff0c;会绑定Activity和Fragment的生命周期。依赖库&#xff1a; implementation androidx.lifecycle:lifecycle…...

python 进程笔记一 (概念+示例代码)

1. 进程的概念 进程是资源分配的最小单位&#xff0c;也是线程的容器&#xff0c;线程&#xff08;python 线程 &#xff08;概念示例代码&#xff09;&#xff09;是CPU调度的基本单位&#xff0c;一个进程包括多个线程。 程序&#xff1a;例如xxx.py是一个程序 进程&#xf…...

各中间件数据库默认访问端口总结

说明 在生态丰富的开发环境下&#xff0c;我们常常需要接触很多中间件产品&#xff0c;中间件默认的连接端口以及可视化ui访问端口也时不时的需要用到&#xff0c;这里循序渐进做好登记&#xff0c;以备查阅&#xff01; 中间件/数据库名称默认端口管理台端口默认账号密码rabbi…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...