activity 临时数据保存和恢复

在使用app的过程中有可能会发生突发情况,杀死我们的APP?

    突发情况有哪些呢?比如屏幕旋转,按Home键,recreate(),锁屏,手机内存不够APP被Kill等,那么有这些情况我们数据还没来的几保存应该怎么做呢?Google已经有了办法了,那就是覆盖onSaveInstanceState()方法来接受一个Bundle类型的参数,我们可以将该activity的信息和状态数据存入此Bundle中。这样,即使该activity在后台被系统摧毁,然后重新回到前台的时候,在调用onCreate()方法时,该Bundle对象会传入onCreate方法的参数中。开发者可以在onCreate中取出自己保存的数据。

比如我有一个recreate 的页面,需要保存一个临时变量isSelected来判断用户是否点击了页面.实现如下:

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putBoolean("isSelected", isSelected);
}
那么如何恢复保存的数据呢?onCreate()方法的函数中有一个Bundle saveInstanceState 的参数,没错数据就是存储在这里的
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (savedInstanceState != null) {
        isSelected = savedInstanceState.getBoolean("isSelected");
    }

在哪里调用saveInstanceState,大家可以在activity的各生命周期打印一下,很简单的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值