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获取保存的信息;
比如你现在正在使用某个应用程序写一些文章或者记录,但是临时有事需要切换到另一个应用程序,比如突然来了电话,系统主动跳到了接电话的界面,那么你接完电话再回到之前编写文章的程序中的时候,如果发现你写了一上午的东西没了,你一定很火大。因为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获取保存的信息;
相关文章推荐
- Android之Activity(八):活动意外被回收,如何处理临时数据的保存问题?
- Android开发_如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
- Android基础知识之四大组件Activity(四)保存Activity的状态
- Android基础部分再学习---activity的状态保存
- 如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
- android 后台 activity 被系统回收 保存状态
- Android基础相关面试问题-activity面试问题(生命周期,任务栈,启动模式,跳转协议)
- 如果一个Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
- appium实践问题记录--如何获取android中应用的activity名称
- 如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
- 《Android中高级工程师面试指南 — 基础知识 — Activity》
- android学习中关于Textview,Button,EditText,连接的设置,Intent,Activity不同状态等的一系列基础知识点
- 如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
- Android—Activity在被系统回收之前保存当前状态
- [android基础知识] 之九: activity的四种状态
- C\C++基础知识,面试常见问题(转…
- 如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
- 如果后台的 Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
- 【Android面试】(一):Android中activity保存状态和数据到底该在哪个方法中进行
- 如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?