后台的activity被系统自动回收的话,怎么在回到界面的时候恢复数据
2023-09-27 14:27:47 时间
Activity的状态通常情况下系统会自动保存的,只有当我们需要保存额外的数据时才需要使用到这样的功能。
通常情况:
调用onPause()和onStop()方法后的activity实例仍然存在于内存中, activity的所有信息和状态数据不会消失, 当activity重新回到前台之后, 所有的改变都会得到保留。
异常情况:
但是当系统内存不足时, 调用onPause()和onStop()方法后的activity可能会被系统摧毁, 此时内存中就不会存有该activity的实例对象了。如果之后这个activity重新回到前台, 之前所作的改变就会消失。
为了避免数据消失:
我们可以覆写onSaveInstanceState()方法。onSaveInstanceState()方法接受一个Bundle类型的参数, 开发者可以将状态数据存储到这个Bundle对象中, 这样即使activity被系统摧毁, 当用户重新启动这个activity而调用它的onCreate()方法时, 上述的Bundle对象会作为实参传递给onCreate()方法, 开发者可以从Bundle对象中取出保存的数据, 然后利用这些数据将activity恢复到被摧毁之前的状态。
需要注意的是:
onSaveInstanceState()方法并不是一定会被调用的, 因为有些场景是不需要保存状态数据的. 比如用户按下BACK键退出activity时, 用户显然想要关闭这个activity, 此时是没有必要保存数据以供下次恢复的, 也就是onSaveInstanceState()方法不会被调用. 如果调用onSaveInstanceState()方法, 调用将发生在onPause()或onStop()方法之前。
相关文章
- windows cmd后台执行+开机自动启动脚本
- ubuntu 后台运行的几种方法!
- C# 动态创建SQL数据库(二) 在.net core web项目中生成二维码 后台Post/Get 请求接口 方式 WebForm 页面ajax 请求后台页面 方法 实现输入框小数多 自动进位展示,编辑时实际值不变 快速掌握Gif动态图实现代码 C#处理和对接HTTP接口请求
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- 美多后台管理和项目环境搭建
- Docker容器(三)——容器端口映射以及访问后台运行的容器实例
- 使用screen后台实时执行命令
- Python新闻网站项目-6.Django内容后台管理系统配置
- ABP框架理论学习之后台工作(Jobs)和后台工作者(Workers)
- Vue3+elementplus搭建通用管理系统实例五:后台主页搭建上
- 微信小程序ssm校园求职系统+后台管理系统|前后分离VUE
- nodejs搭配phantomjs highcharts后台生成图表
- 笔记本开机就自动后台开了个DIRECT开头的热点
- 研究 flex 4 开发后台管理项目(1)
- 后台启动es head,关闭shell后es head自动关闭
- Spring Security实现后台管理员登录(一)