zoukankan      html  css  js  c++  java
  • Android开发中Activity状态的保存与恢复

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

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

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

     1 private static final String INSTANCE_STATUS="instance_status";//父类状态
     2 private static final String STATUS_ALPHA="status_alpha";//用户自定义状态
     3 
     4 @Override
     5 protected Parcelable onSaveInstanceState(){
     6     Bundle bundle=new Bundle();//新建一个bundle
     7     bundle.putParcelable(INSTANCE_STATUS,super.onSaveInstanceState());//将父类状态保存到bundle
     8     bundle.putFloat(STATUS_ALPHA,mAlpha);//将用户数据保存到bundle
     9     return bundle;//返回bundle
    10 }
    11 
    12 @Override
    13 protected void onRestoreInstanceState(Parcelable state){
    14     if(state instanceof Bundle){//判断当前接收的状态是不是Bundle的子类
    15         Bundle bundle=(Bundle)state;//类型强制转换
    16         mAlpha=bundle.getFloat(STATUS_ALPHA);//取出用户自定义状态
    17         super.onRestoreInstanceState(bundle.getParcelabel(INSTANCE_STATUS));//恢复父类状态
    18         return;//这里要返回,不然if内容执行两次
    19     }
    20     super.onRestoreInstanceState(state);
    21 }
  • 相关阅读:
    李洪强九宫格的实现
    iOS开发多线程篇 11 —自定义NSOperation
    CALayer3-层的属性
    网络编程小结
    iOS开发多线程篇 10 —NSOperation基本操作
    CALayer2-创建新的层
    iOS开发之多文件上传
    三级联动
    用 ERD 盘解决 Win8 自己主动更新后不能启动的问题
    hdu1028(母函数+DP)
  • 原文地址:https://www.cnblogs.com/xyida/p/4311691.html
Copyright © 2011-2022 走看看