Android——处理设备旋转Activity销毁时临时数据丢失的问题

一,在设备的旋转的时候,发生了什么?

设备旋转时候,当前的activity实例会被系统销毁,然后创建一个新的Activity实例。

接下来我们通过检测Activity的生命周期来观察下:

上面是我启动activity时依次发生的事件,接下来我旋转设备:

可以看到,旋转的时候,第一个activity被destroy掉,之后新的activity被创建。

二,理解设备配置与备选资源

旋转设备会改变设备配置。设备配置是用来描述设备当前状态的一系列特征。这些特征包括:屏幕的方向,屏幕的尺寸,屏幕密度(是一个固定的设备配置,无法在运行时发生改变),键盘类型,底座模式及语言。

只要在应用运行中设备配置发生了变化,安卓就会销毁当前activity,然后再新建一个activity.

三,为设备旋转后使用新布局

如图,在res文件夹下新建layout-land文件夹,在里面新建同名布局文件,那么,当设备转到水平的时候,新创建activity的时候,就会自动使用这个文件夹下的水平布局文件。

四,在设备旋转之前,如何保存当前的临时数据?

类似Web中的刷新,当我刷新后,当前页面的临时数据都被清掉了,比如我当前正在填写一个表单,里面选择了性别女,刷新下,又要重新填写。显然,设备旋转时产生了一个隐性的bug,那么,安卓中如何处理这种保存临时数据的问题呢?

我们可以通过重写onSaveInstanceState方法实现。

首先,在这个方法里面写入要保存的数据:

之后,我们在OnCreate方法里面重新载入数据:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-07 03:25:08

Android——处理设备旋转Activity销毁时临时数据丢失的问题的相关文章

【Android基础】Activity启动模式以及Intent Flags 与 栈 的全面解析

Android开发的过程中,Intent是我们最常用Android用于进程内或进程间通信的机制. Intent主要用于2种情景下:发起意图 .广播 其底层实现原理不在此篇文章的讨论范围,以后会陆续更新上的. 下面我就根据近期学习,总结记录下Activity启动模式 及 Intent Flags 与 栈 的关联分析. 1.首先我们先搞清楚什么是栈: 栈是一种常用的数据结构,栈只允许访问栈顶的元素,栈就像一个杯子,每次都只能取杯子顶上的东西,而对于栈就只能每次访问它的栈顶元素,从而可以达到保护栈顶元

Android之路-------Activity的详解

前言 由于接近放假,公司在赶项目所以前段LP比较忙,没什么时间总结和写博客,只是准备睡觉的时候看看书,每天看的不算多,大概10多页左右吧,不过每天坚持如此的话那也是一个庞大的数字. 今天LP的任务完成了,在领导还没分配任务之前再发布一篇关于Activity的博文.......... 上一篇跟大家分享了Android的发展史.系统框架.还有Android的四大组件,下面LP就为大家介绍下四大组件之一的Activity. 知道了Android的历史之后,有没有让Android那种打不死的精神打动了,

Android中Activity运行时屏幕方向与显示方式详解

现在我们的手机一般都内置有方向感应器,手机屏幕会根据所处位置自动进行横竖屏切换(前提是未锁定屏幕方向).但有时我们的应用程序仅限在横屏或者竖屏状态下才可以运行,此时我们需要锁定该程序Activity运行时的屏幕方向.还有就是在我们用手机观看视频时,随意的进行横竖屏切换,但播放进度不会随着屏幕的转换而从头开始播放,为了实现这个功能,我们就需要在Activity转换时对当前数据进行保存. 现在根据以上两种需求,个人提出以下解决方案: 一.锁定Activity运行时屏幕方向,如下图(演示锁定横屏):

android调用摄像头导致activity销毁的解决办法

APP里有一个上传头像,可以直接从相册选择图片上传,也可以使用照相机拍照上传.这个功能在大部分机器下都正常,然而在部分机器(例如三星)却失败,另外独立写了个测试例子检查这个问题. package com.penngo.camera; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import an

Android中Activity切换时共享视图元素的切换动画(4.x兼容方案)

同时发布在我的博客 点此进入 开始 上一篇讲了使用 Google 的 AppCompat-v7 来实现 Activity 切换时实现共享视图元素的切换动画.这一篇介绍两个可以兼容 4.x 的两个第三方方案. 上一篇:Android中Activity切换时共享视图元素的切换动画(5.0以上) 方案一:PreLollipopTransition 首先在 build.gradle 配置文件添加这个库依赖 dependencies { compile 'com.kogitune:pre-lollipop

Android Configuration横竖屏切换时Activity生命周期调用

问题:横竖屏切换时Activity的生命周期? 测试环境:华为mate7 package com.virglass.beyond.activity; import android.app.Activity; import android.content.res.Configuration; import android.os.Bundle; import com.virglass.beyond.utils.LogUtil; /** * 系统设置更改 * @author Administrator

Android开发,在Activity启动时,默认隐藏软键盘。和遮挡Edittext时的处理

在Activity启动时,默认隐藏软键盘: 在AndroidManifest.xml中找到你得Activity ,为它添加属性: android:windowSoftInputMode="stateAlwaysHidden" ------------------------ 输入遮挡Edittext时的处理: 在AndroidManifest.xml中找到你得Activity ,为它添加属性: android:windowSoftInputMode="adjustPan&qu

Android app启动activity并调用onCreate()方法时都默默地干了什么?

Android app启动activity并调用onCreate() 方法时都默默地干了什么? 在AndroidManifest.xml文件中的<intent-filter>元素中有这么两句: <intent-filter>     <action android:name="android.intent.action.MAIN"/>     <category android:name="android.intent.categor

android源码解析之(十五)--&gt;Activity销毁流程

继续我们的源码解析,上一篇文章我们介绍了Activity的启动流程,一个典型的场景就是Activity a 启动了一个Activity b,他们的生命周期回调方法是: onPause(a) –> onCreate(b) –> onStart(b) –> onResume(b) –> onStop(a) 而我们根据源码也验证了这样的生命周期调用序列,那么Activity的销毁流程呢?它的生命周期的调用顺序又是这样的呢? 这里我们我做一个简单的demo,让一个Activity a启动A