您的位置:首页 > 职场人生

Android基础知识记录|面试常见问题:activity被回收,如何保存回收前的状态

2014-04-18 08:51 736 查看
举个例子:

比如你现在正在使用某个应用程序写一些文章或者记录,但是临时有事需要切换到另一个应用程序,比如突然来了电话,系统主动跳到了接电话的界面,那么你接完电话再回到之前编写文章的程序中的时候,如果发现你写了一上午的东西没了,你一定很火大。因为Activity在onPause和onStop状态下,是可能被系统所回收的,所以如何保存Activity被回收前的状态是一个比较有用的问题。

那么如何保存Activity被回收前的状态呢:

Activity在被回收的时候,会调用onSaveInstanceState回调方法用以保留当前的状态。而在OnCreate方法中进行数据回复,2.0版本之后则可以在onRestoreInstanceState回调方法中进行数据恢复;

数据的保留可以在onpause方法和onSaveInstanceState方法中保留数据;

protected void onPause(){

super.onPause();

String saveStr=....;//要保存的信息

SharePreferences sp=this.getSharePreferences("save",Context.MODE_PRIVATE);

sp.edit().putString("content",savStr).commit();//保存信息



protected void onSaveInstanceState(Bundle outState){

String saveStr=...;//要保存的信息

outState.putString("content",saveStr);

super.onSaveInstanceState(outState);//调用父类的onSaveInstanceState方法保存信息

}

在onCreate方法中恢复数据的时候,首先判断onSaveInstanceState是否为空,如果不为空,那么,就取出以保留的数据;

而在onResume方法中回复数据则是getSharePreferences获取保存的信息;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐