Android——处理设备旋转Activity销毁时临时数据丢失的问题
一,在设备的旋转的时候,发生了什么?
设备旋转时候,当前的activity实例会被系统销毁,然后创建一个新的Activity实例。
接下来我们通过检测Activity的生命周期来观察下:
上面是我启动activity时依次发生的事件,接下来我旋转设备:
可以看到,旋转的时候,第一个activity被destroy掉,之后新的activity被创建。
二,理解设备配置与备选资源
旋转设备会改变设备配置。设备配置是用来描述设备当前状态的一系列特征。这些特征包括:屏幕的方向,屏幕的尺寸,屏幕密度(是一个固定的设备配置,无法在运行时发生改变),键盘类型,底座模式及语言。
只要在应用运行中设备配置发生了变化,安卓就会销毁当前activity,然后再新建一个activity.
三,为设备旋转后使用新布局
如图,在res文件夹下新建layout-land文件夹,在里面新建同名布局文件,那么,当设备转到水平的时候,新创建activity的时候,就会自动使用这个文件夹下的水平布局文件。
四,在设备旋转之前,如何保存当前的临时数据?
类似Web中的刷新,当我刷新后,当前页面的临时数据都被清掉了,比如我当前正在填写一个表单,里面选择了性别女,刷新下,又要重新填写。显然,设备旋转时产生了一个隐性的bug,那么,安卓中如何处理这种保存临时数据的问题呢?
我们可以通过重写onSaveInstanceState方法实现。
首先,在这个方法里面写入要保存的数据:
之后,我们在OnCreate方法里面重新载入数据:
Android——处理设备旋转Activity销毁时临时数据丢失的问题相关推荐
- Android开发——异步任务中Activity销毁时的问题
0. 前言 在Android开发中经常会发生Activity的销毁重建,比如用户长时间接听一个电话后回到APP.在Android开发--Fragment知识整理(二)中我们提到了使用Fragment ...
- activity销毁时执行执行方法是_[Android开发 VIII ]销毁一个activity
销毁一个activity一共有两种方法,一种是按下返回键,就可以销毁当前activity:还有一种方法就是通过代码的方式,Android提供了finish()这个方法,调用这个方法也可以完成销毁一个a ...
- 屏幕旋转导致Activity销毁重建,ViewModel是如何恢复数据的
前言 当屏幕旋转或者切换系统语言时,Activity 生命周期从销毁再重建,但是ViewModel里面的变量值不受到影响,说明ViewModel中的变量在屏幕旋转前进行了存储,在屏幕旋转后又进行了恢复 ...
- Android教程 -06 Activity的生命周期
本篇播客我们重点介绍下如下知识点: 程序启动原理 Activity生命周期 Activity销毁与创建 视频建议采用超清模式观看, 欢迎点击订阅我的优酷 height="498" ...
- Android之路-------Activity的详解
前言 由于接近放假,公司在赶项目所以前段LP比较忙,没什么时间总结和写博客,只是准备睡觉的时候看看书,每天看的不算多,大概10多页左右吧,不过每天坚持如此的话那也是一个庞大的数字. 今天LP的任务完成 ...
- android的四大组件及使用场景,Android/四大组件/Activity.md · BoraxZYF/AndroidInterview - Gitee.com...
## 四大组件 ## Activity ### Activity 的四种启动模式及使用场景 - standard 标准模式,Activity 的默认启动模式.每次启动一个 Activity 时都会创建 ...
- Android 浅谈 Activity (下)
Android 浅谈 Activity(中) 上节讲了数据传递和数据回传,这节讲一讲状态保存以及启动模式. 在使用Bundle传递数据时,要注意,Bundle的大小是有限制的 < 0.5MB,如 ...
- Activity销毁onStop或onDestroy延时10s左右才回调
好记性不如烂笔头.生活中多做笔记,不仅可以方便自己,还可以方便他人. 前段时间,同事跟我说他遇到一个很奇怪的问题:退出页面,Activity销毁时onStop或onDestroy延时10s左右才回调. ...
- Android屏幕旋转时Activity不重新调用onCreate的方法
2019独角兽企业重金招聘Python工程师标准>>> android屏幕旋转时Activity不重新调用onCreate的方法 当手机转屏时,Activity的onDestroy和 ...
最新文章
- 第十四周项目一-排序函数模版
- 实验3 linux内存映射,3Linux内存映射,mmap()函数
- hosts 持续更新 - laod
- .NET混淆器 Dotfuscator使用教程六:加强保护之添加Checks
- Python里那些可爱的游戏模块们
- String类的使用 Part2
- 研究者展示黑客通过GPU绕过防毒软件查杀的方法
- 江湖有故人,欢迎来到程序员的江湖
- 【PostgreSQL-9.6.3】创建、修改、删除PostgreSQL数据库
- jQuery DataTables: How to add a checkbox column
- CSS里 @import用法
- 在ArcMap离线加载海量卫星影像的方法
- python做鼠标自动移动_Python实现鼠标自动在屏幕上随机移动功能
- 微信红包封面,你真的领取到了吗?
- 活动网络——用顶点表示活动的网络AOV和拓扑
- 朋友圈gys是什么意思,女生微信朋友圈说说经典句子
- 打印机驱动装上了,却无法正常打印的问题解决方法
- 智能家居无线方案ZIGBEE、Z-Wave、WIFI、蓝牙、红外、GPRS以及NB-IOT对比
- opencv2413 gpu mog2_gpu CascadeClassifier_GPU
- 华为机试---年终奖(动态规划)
热门文章
- linux系统中如何安装qwt,在Linux上部署Qt及Qwt
- Linux中$PATH详解
- excel小写转大写公式_Word如何一键转PPT/Excel,来看看用对的方式操作office有多方便...
- 定义一个空切片_全面解读Python高级特性切片
- 火线精英手游服务器维护,火线精英手机版登录失败进不去解决办法
- 拆装计算机主机,台式计算机的拆装教案.doc
- Flink AggOperator 增量聚合函数
- pytorch torch.nn.Module.register_buffer
- Werkzeug routing
- opencv Shi-Tomasi角检测