Android异常退出时Activity数据的保存和恢复

本文探讨了Android中Activity在异常退出时如何保存和恢复数据,包括onSaveInstanceState和onRestoreInstanceState的使用场景,onPause作为持久化数据的最后时机,以及如何防止Activity重建以避免数据丢失。重点讲解了临时数据和永久性数据的处理方法。
摘要由CSDN通过智能技术生成

一、onSaveInstanceState & onRestoreInstanceState
(1)使用场景
当我的APP处在前台,能与用户交互的情况下,出现下述的突发事件时,只有点击back键,onSaveInstanceState方法不会调用。但都执行onPause();onSaveInstanceState的调用是处于onPause和onStop之间;能保证的是onSaveInstanceState方法会在onStop之前调用,但是是否在onPause之前就不一定了。onRestoreInstanceState的调用时机在onStart之后。

  • 点击back键
  • 点击锁屏键
  • 点击home键
  • 其他APP进入前台
  • 启动了另一个Activity
  • 屏幕方向旋转
  • APP被Kill
  • 出现crash时

结论:
google工程师们对onSaveInstanceState如此设计就是让其完成对一些临时的、非永久数据存储并进行恢复。什么样的数据属于临时数据呢?举个例子,比如EditText中输入的内容,CheckBox是否勾选,ScrollView的滑动位置,目前视频的播放位置等等。

注意:
(1)正常情况下Activity的创建和销毁不会调用onSaveInstanceState和onRestoreInstanceState方法。
(2)Android的View本身自己就实现了onSaveInstanceState方法,这些控件自己就具有保存临时数据和恢复临时数据的能力。

例如TextView中的部分源码:<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值