当置于后台的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. asp.net 后台 get,post请求

    //Post请求 public static string Post(string url,string obj=null) { string param = (obj);//参数 byte[] bs ...

  2. UVA1388 Graveyard

    思路 就是对于每个点,找出离他最近的目标点的距离 我使用了上取整和下取整实现,蓝书上的实现方法是坐标系缩放,每个点的目标位置就是它四舍五入的结果 具体证明见蓝书 代码 #include <cst ...

  3. MSSQL 数据库 buildindex 出错

    错误1: Executing the query "ALTER INDEX [IX_liveConfigState_Service_ServiceId_..." failed wi ...

  4. JavaScript的Let用法

    let 语句声明一个块级作用域的本地变量,并且可选的将其初始化为一个值. 描述 let 允许你声明一个作用域或被限制在块级中的变量.语句或者表达式. 与var不同的是,它声明的变量只能是全局或者整个函 ...

  5. [原]jsbsim 自动驾驶c310ap文件改写

    <?xml version="1.0"?> <!-- Author: 南水之源 Date: 1 January 2019 Function: A-320 auto ...

  6. js 字符串跟数组的相互转化

    一:字符串转化为数组 例子: var str = "3:2;2:1"; 要变成 arr= [{ a:"3", b:"2", bol:fals ...

  7. Angular 学习笔记 (Material Select and AutoComplete)

    记入一些思考 : 这 2 个组件有点像,经常会搞混. select 的定位是选择. 目前 select 最糟糕的一点是 not search friendly. 还有当需要 multiple sele ...

  8. ADC配置成定时器触发的启发

    百度文库:https://wenku.baidu.com/view/99d39413f78a6529647d5344.html STM32关于使用定时器触发ADC转换的解决办法和详细说明 本人在使用S ...

  9. 雷林鹏分享:jQuery EasyUI 数据网格 - 扩展行显示细节

    数据网格(datagrid)可以改变它的视图(view)来显示不同的效果.使用详细视图,数据网格(datagrid)可以在数据行的左边显示展开按钮("+" 或者 "-&q ...

  10. CentOS7.5下安装、配置mariadb --CentOS7.5

    1.安装mariadb [root@VM_39_157_centos bin]# yum -y install mariadb-server 2.启动mariadb服务 [root@VM_39_157 ...