您的位置:首页 > 移动开发 > Android开发

Android开发中Activity状态的保存与恢复

2015-03-03 18:15 369 查看
当置于后台的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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: