如何在旋转屏幕后不再重建Activity

如何在Android中旋转屏幕时避免重新绘制Activity 在Android开发中,设备旋转通常导致当前活动(Activity)被销毁并重新创建,这可能导致用户界面重置和不必要的资源重新加载。然而,有时我们希望避免这种行为,特别是当我们的应用正在执行耗时操作时,如数据下载、复杂视图的渲染等。本文将探讨如何在Android中处理屏幕旋转,以避免Activity的重新绘制。 阅读详情

对于一般的Activity,如果不做特殊要求,那么在手机切换横竖屏后,Activity会重新运行onCreate()等流程,不过之前start的Activity仍然有效。若想让Activity不再走onCreate等流程,那么就在AndroidManifest.xml文件中给Activity添加属性android:configChanges

针对sdk13以上的版本,需要额外添加screenSize这个参数。

android:configChanges="keyboardHidden|orientation|screenSize"

如果是sdk13以下的版本,只需给activity的configChanges属性添加orientation和keyboardHidden这两个参数。

android:configChanges="orientation|screenSize"

通常如果不添加configChanges属性,那么activity在旋转屏幕后的生命周期是这样的:

Activity刚启动:

onCreate->onStart->onResume

屏幕切换到横屏:

onPause->onSaveInstanceState->onStop->onDestroy->onCreate->onStart->onRestoreInstanceStaate->onResume

屏幕切换到竖屏:

onPause->onSaveInstanceState->onStop->onDestroy->onCreate->onStart->onRestoreInstanceState->onResume

 

添加上述configChanges属性后

Activity启动后的周期:

onCreate->onStart->onResume

切换到横屏:

调用onConfigurationChanged()方法

切换到竖屏:

调用onConfigurationChanged()方法

不再调用activity的其他生命周期方法。

Android 屏幕旋转(二):屏幕旋转activity重建问题 当设备旋转时,系统会默认销毁当前activity实例,然后再创建一个新的activity实例,重新调用activity的各个生命周期。Android可完成最佳匹配资源的调用,但前提是它必须通过新建一个activity来实现。设备一经旋转,Android需要销毁当前activity,然后新建一个activity来完成oncreate()方法的调用,从而实现使用最佳资源匹配新的设备配置。 要解决这个问题 阅读详情

相关推荐

Android App屏幕旋转要点

Android App屏幕旋转因素、要点 android:screenOrientation android:configChanges onConfigurationChanged

主要记录一些问题处理记录,部分是作为知识库使用 5094

Android设置切换横竖屏时不让Activity重启

虽然重启Activity为我们提供了保存数据和读取数据的方式,但是如此一来程序会显得有些繁琐,所以有时候程序员往往就不想让Activity重启,Android也为我们提供了解决方案,就是通过onConfigurationChanged拦截横竖屏变换,从而进行必要的重新布局和切换操作。操作步骤如下: 首先,manifest中为相应的Activity设置android:configChanges属性,从而让Activity不延续上述的重建流程,具体如下: 1.Andorid 3.2以前的SD...

1万+

Android屏幕旋转下Activity生命周期详解与实战

htmltable {th, td {th {pre {简介:在Android开发中,屏幕旋转会触发Activity的销毁与重建,涉及onCreate、onStart、onResume等生命周期方法的重新调用。

weixin_35094083的博客 921

android 强制 横、竖屏,旋转不重载activity

强制横、竖屏 方法一:在AndroidManifest.xml中配置 如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性,他有以下几个参数: "unspecified":默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示

kingken212的专栏 6772

android横竖屏切换不重启activity解决方案

部分网友会发现Activity在切换到后台或布局从横屏LANDSCAPE切换到PORTRAIT,会重新切换Activity会触发一次onCreate方法,使用其他的方法同样可以实现

使用 CFD 仿真进行阀门性能分析:第一部分

了解如何使用 Ansys Discovery 评估阀门性能,使工程师能够设计出更好的产品。

jkh920184196的博客 3146

Android 禁止屏幕旋转 & 旋转屏幕时保持Activity内容

1.在应用中固定屏幕方向。      在AndroidManifest.xml的activity中加入:            android:screenOrientation=”landscape”      属性即可(landscape是横向,portrait是纵向)。 OK 2.随屏幕旋转时,不重新调用onCreat

dongge825的专栏 6845

硬件单板类机考复习提纲

6、 功率晶体管低导通损耗时处于的状态(饱和状态、放大状态、截止状态)(放大器的采样频率特性)总结:元器件特性(电阻、电容、二极管、三极管、晶体、晶振、MOS、磁珠等)信号质量问题产生根因(单调性、边沿过缓、毛刺、回沟、抖动等)3、 几种电容容量范围大小(超级电容、钽电容、陶瓷电容、铝电容)66、背板连接器接触设计的接触顺序(先导向、再地针、最后信号针)28、逻辑电平接口的特性(CMOS、TTL、ECL、PECL)76、差分电平(lvpecl、RS-422/485、cml)

2303_79562407的博客 1万+

Android横竖屏切换时不销毁Activity

横竖屏切换不关闭activity,设置了android:configChanges="orientation|keyboardHidden";为什么还会走生命周期过程

骑猪追大象 2298

C# Log4Net不输出日志的解决方法

log4net是一个流行的 .NET 日志框架,用于记录应用程序的日志信息。如果你在使用log4net。

精通搬砖,资深技术砖家,在软件开发,人工智能,设备开发等领域都有研究。商业合作&交流学习可私信联系。 1263

解决Gradle中NPM命令失效问题

摘要:本文分析了IntelliJ IDEA中Gradle执行npm命令失败的问题,报错显示"npm"文件不存在。通过确认npm安装路径、检查系统PATH与Gradle环境的差异,提出两种解决方案:1) 在build.gradle中使用npm绝对路径;2) 通过launchctl修改用户PATH。实例展示了如何修改Gradle脚本或系统配置来解决该问题,指出跨平台开发中环境变量配置的重要性。文章为开发者提供了处理类似问题的实用方法。

2501_90323865的博客 90

Android横竖屏切换

一、生命周期 1、不设置configChanges的情况下的生命周期如下所示: 这里可以清晰得看到,Activity再次重新创建了。。。 2、设置android:configChanges="orientation|keyboardHidden|screenSize"的情况下的生命周期如下所示: 其中红色方框中的log是屏幕旋转后的,只要眼神没问题,依然可以清晰的看到,这次Acti...

就叫我东东啦的博客 3444

MAVLink协议详解

MAVLink是为微型飞行器MAV(Micro Air Vehicle)设计的(LGPL)开源的通讯协议。是无人飞行器和地面站(Ground Control Station ,GCS)之间,以及无人飞行器之间通讯常用的协议。APM、PIXHAWK飞控,Mission Planner、QGroundControl地面站均使用了MAVLink协议进行通讯。 MAVLink源码下载地址(现已更新至v2.0):https://github.com/mavlink/qgroundcontrol   用户手册:ht

程序猿老樊的博客 7705

android:configChanges="screenSize | orientation | keyboardHidden"

在Android的开发中,在配置文件的activity中添加该属性的目的是:阻止程序在运行时重新加载Activity;也就是说    当横竖屏切换/或尺寸发生改变的时候会直接调用onCreate方法中的onConfigurationChanged方法,而不是重新执行onCreate方法,但如果没有使用这个属性就会重新调用onCreate方法了。

u012106397的专栏 2424

[Dify实战] 项目复盘助手:自动拉数据、生成复盘报告

本文介绍如何利用Dify平台构建自动化项目复盘助手,解决传统人工复盘效率低、易遗漏等问题。系统通过自动拉取Git/Jira等数据源,计算关键指标后,由LLM生成结构化复盘报告。文章详细讲解了数据采集、指标计算、Prompt设计等核心模块的实现,并分享了完整Workflow搭建步骤。实践表明,该系统能将复盘耗时从4小时缩短至10分钟,显著提升数据准确率和执行频率。最后总结了数据一致性、输出质量等常见问题的解决方案,强调Dify+LLM组合可实现复盘流程的自动化流水线。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 118

YOLOv11改进 | 注意力篇 | YOLOv11引入CA注意力机制

摘要:最近关于移动网络设计的研究已经证明了通道注意力(例如,挤压和激励注意力)对于提升模型性能的显着有效性,但它们通常忽略了位置信息,而位置信息对于生成空间选择性注意力图很重要。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~3.2 在Extramodule里创建CA。在CA.py文件里添加给出的CA代码。

tsg6698的博客 2979

opposdk---Are you missing a call to unregisterReceiver()?

游戏在接入时遇见了一个比较奇怪的问题,取消支付时返回游戏显示的是欢迎页面 查看log信息时,发现在点击支付时抛出了以下的错误信息: 02-23 15:55:46.511 32387-32387/? E/ActivityThread: Activity com.mfp.jellyblast.AppActivity has leaked IntentReceiver com.nearm

辛子未的专栏 1239

【06】C#入门到精通——C# 多个 .cs文件项目 同一项目下添加多个 .cs文件

本文介绍了如何将C#游戏开发中的代码从单个.cs文件拆分到多个.cs文件中,以提升代码的可维护性和可读性。文章演示了在Visual Studio中创建Hero类和ShowInfo类的具体步骤:通过右键项目名添加新建类,将原有代码分别剪切到对应的类文件中,并自动生成命名空间。拆分后需要在Program.cs中通过"using"指令引用这些类,最后通过运行测试验证功能正常。这种模块化代码组织方式能有效解决单一文件代码过长、结构混乱的问题。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1137

Android屏幕旋转导致Activity重建的几种解决办法

最近学习了Android开发的相关课程,也试着动手做了书上的例子和自己的项目,在《Android编程权威指南》的第三章介绍了Activity的生命周期,提到了旋转设备会导致Activity重建的问题以及对应的解决办法。 教材中提到的解决方法是分别创建水平和垂直布局,再通过覆盖onSaveInstanceState(Bundle)方法保存数据,在屏幕旋转后将数据传递给新的Activ...

小咸鱼的博客 4653

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Activity屏幕旋转重建ViewModel不销毁问题分析

Activity屏幕旋转重建ViewModel不销毁问题分析 ViewModel是数据与页面解耦的一大利器,使用ViewModel无须关系其与Activity的生命周期引起的问题,在Activity生命周期的尽头会自动移除掉ViewModel,切断与Activity的联系,及时后续有ViewModel的事件传递过来,也无法达到Activity,不会引起任何bug 疑惑??? 但是在某种情况下,却出现这样一个情况!Activity配置横竖屏自动切换,当Activity屏幕切换时,其生命周期已经走到尽头,on

jackzhouyu的专栏 2533

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android旋转屏幕导致Activity重建

最近做一个小应用,自然想做成兼容性高点的可是布局采用Fragment。于是在应用即将完成的时候,发现了一个问题,就是屏幕旋转问题,当设备屏幕旋转,应用的Activity就会被重建。如果这会是在输入一个表单,并且快完成了。这个么一不小心一转,发现Activity被重建,之前写的东西全部消失。这等心情,简直不知道该找谁发泄。言归正传。         Activity是负责与用户交互的最主要机制,任

vaecer 1059

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

屏幕旋转导致Activity销毁重建,ViewModel是如何恢复数据的

前言 当屏幕旋转或者切换系统语言时,Activity生命周期从销毁再重建,但是ViewModel里面的变量值不受到影响,说明ViewModel中的变量在屏幕旋转前进行了存储,在屏幕旋转后又进行了恢复。 里面的原理是怎么实现的呢? 一、获取ViewModel实例 // MainActivity.kt val viewModel = ViewModelProvider(this).get(MainViewModel::class.java) 这个代码拆分成2段来分析:ViewModelProvi.

Jason_Lee155的博客 2870

[Android问答] 旋转屏幕导致Activity重建怎么办?

Android开发文档上专门有一小节解释这个问题。简单来说,Activity是负责与用户交互的最主要机制,任何“设置”(Configuration)的改变都可能对Activity的界面造成影响,这时系统会销毁并重建Activity以便反映新的Configuration。 “屏幕方向”(orientation)是一个Configuration,通过查看Configuration类的jav...

diaozhuo4700的博客 228

Android基础:屏幕旋转Activity生命周期解析(含demo)

目录Activity简介Activity的生命周期验证生命周期的执行总结 Activity简介 Activity中文意思“活动”,是Android中四大组件之一,主要作用于用户交互、页面展示。可以理解为用户打开Android手机上的任意一个应用的任何页面都有一个Activity。每个Activity都有自己的生命周期,从用户打开应用,到切换应用页面,到退回桌面,到完全推出应用这个过程都伴随这Act...

whale的博客 3147

旋转屏幕导致Activity重建问题的解决办法

Android开发文档上专门有一小节解释这个问题。简单来说,Activity是负责与用户交互的最主要机制,任何“设置”(Configuration)的改变都可能对Activity的界面造成影响,这时系统会销毁并重建Activity以便反映新的Configuration。 “屏幕方向”(orientation)是一个Configuration,通过查看Configuration类的javado

qq_33067031的博客 403

Android 屏幕旋转的处理

如果没有针对性地做任何处理的话,默认情况下,当用户手机的重力感应器打开后,旋转屏幕方向,会导致app的当前activity发生onDestroy-> onCreate,会重新构造当前activity和界面布局,很多横屏/竖屏的布局如果没有很好的设计的话,转换为竖屏/横屏后,会显示地很难看。

xiaokangss的博客 3812
上一篇: git abandon某条提交导致后续提交无法merge问题
下一篇: 如何合并git的多条commit
AurumMann
博客等级 码龄10年 10粉丝 46原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值