当置于后台的Activity因内存紧张被系统自动回收的时候,再次启动它的话他会重新调用onCretae()从而丢失了之前置于后台前的状态。

这时候就要重写Activity的两个方法来保存和恢复状态,具体用途举个例子:你正在编辑短信,这时候来了一个电话,打完电话回到短信界面,

短信刚好被系统回收重启,这时原先编辑了一半的内容总不能丢失了吧,这样影响用户体验。所以解决办法如下:

 private static final String INSTANCE_STATUS="instance_status";//父类状态
private static final String STATUS_ALPHA="status_alpha";//用户自定义状态 @Override
protected Parcelable onSaveInstanceState(){
Bundle bundle=new Bundle();//新建一个bundle
bundle.putParcelable(INSTANCE_STATUS,super.onSaveInstanceState());//将父类状态保存到bundle
bundle.putFloat(STATUS_ALPHA,mAlpha);//将用户数据保存到bundle
return bundle;//返回bundle
} @Override
protected void onRestoreInstanceState(Parcelable state){
if(state instanceof Bundle){//判断当前接收的状态是不是Bundle的子类
Bundle bundle=(Bundle)state;//类型强制转换
mAlpha=bundle.getFloat(STATUS_ALPHA);//取出用户自定义状态
super.onRestoreInstanceState(bundle.getParcelabel(INSTANCE_STATUS));//恢复父类状态
return;//这里要返回,不然if内容执行两次
}
super.onRestoreInstanceState(state);
}

Android开发中Activity状态的保存与恢复的更多相关文章

  1. activity状态的保存和恢复

    activity状态的保存和恢复 一.简介 1.保存activity状态 * 保存activity状态,onSaveInstanceState这个方法会自动保存有ID的组件的状态 * 没有ID的组件或 ...

  2. Android之Activity状态的保存和恢复

    系统在某些情况下会调用onSaveInstanceState()和onRestoreInstanceState() 这两个方法来保存和恢复Activity的状态. 一句话:Activity在" ...

  3. 详解Android开发中Activity的四种launchMode

    Activity栈主要用于管理Activity的切换.当使用Intent跳转至某个目标Activity,需要根据目标Activity的加载模式来加载. Activity一共有以下四种launchMod ...

  4. Activity 状态的保存和恢复

    Activity状态保存的两种情况 一.Activity状态保持概念 保存Activity的状态是非常重要的,例如我们在玩一个游戏的时候,突然来了一个电话,这个时候在接听完电话之后我们返回到游戏中,这 ...

  5. Android开发中activity切换动画的实现

    (1)我们在MainAcitvity中定义两个textview,用于点击触发切换Activity事件,下面是布局文件代码. <LinearLayout android:layout_width= ...

  6. Android中突发情况Activity数据的保存和恢复

    Android中突发情况Activity数据的保存和恢复 写在前面:在我们的APP使用的过程中,总有可能出现各种手滑.被压在后台.甚至突然被杀死的情况.所以对APP中一些临时数据或关键持久型数据,就需 ...

  7. android开发中关于继承activity类中方法的调用

    android开发中关于继承activity类中的函数,不能在其他类中调用其方法. MainActivity.java package com.example.testmain; import and ...

  8. Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}

    Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPoi ...

  9. Android开发之---Activity启动模式

    在Android开发中,启动一个新的activity我们可以使用startActivity或startActivityForResult,Android系统使用栈的方式来管理一个APP的页面显示与保存 ...

随机推荐

  1. koa2 中 cookie 存在的中文问题

    koa2  中的 cookie 没办法直接设置中文,会报错 ‘ argument value is invalid ’ 解决办法: 先将它转成 ‘ base64 ’ 编码来存储 new Buffer( ...

  2. Visual Studio 2017 配置导出/导入/重置

    1.打开VS,按下面的快捷键呼出命令窗口 Ctrl+Alt+A 2.导入/导出/重置命令 Tools.ImportandExportSettings [/export:filename | /impo ...

  3. Jmeter 分布式(Jmeter5.1版本)

    一.修改负载机配置 vi /home/programs/apps/apache-jmeter-5.1/bin/jmeter.properties A.(先保证1099端口没有被占用,这里假设此端口未被 ...

  4. IP分为五类

    IP地址分为五类: IP地址分为五类:A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验. 常用的三类IP地址 IP = 网路地址(网络号)+主机地址(主 ...

  5. 字体转换网站——Font Squirrel

    转载自:http://www.5imoban.net/jiaocheng/CSS3_HTML5/2016/0714/1735.html html5之前,只要稍微特殊点的字体,都必须做成图片,以免客户端 ...

  6. Hbasewindows系统下启动报错及解决办法

    今天在本地windows电脑上,装pinpoint时,需要先安装一个Hbase数据库,按照教程下载启动Hbase数据库时,却启动报错:java.io.IOException: Could not lo ...

  7. ng工程升级cli版本

    全局更新ng 然后在工程里 ng update @angular/cli @angular/core

  8. Dynamic networks | 动态网络

    Dynamic networks reveal key players in aging 系统生物学中的网络分析 网络的拓扑结构:topological properties, 网络的度:whole ...

  9. flink入门

    wordCount POM文件需要导入的依赖: <dependency> <groupId>org.apache.flink</groupId> <artif ...

  10. postman加密短信验证码

    问题描述:有一个绑定手机号的接口需要向手机发送验证码,接口会将验证码进行base64编码加密,加密后的值赋值给code参数,其他接口请求均需要code参数,如何带上该参数 解决方案:在请求其他接口前请 ...