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

本文探讨了在Android中,特别是基于Kotlin的环境下,如何在Activity和Fragment异常退出时保存与恢复数据。重点讲解了Activity的onSaveInstanceState和onRestoreInstanceState方法在横竖屏切换和崩溃场景下的应用,以及如何防止Activity因配置变化重建。同时提出了通过设置Activity方向和修改AndroidManifest.xml来避免重建,并给出了两种解决Activity重建导致的问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文章是基于Kotlin版的简单Activity-Fragment状态切换及数据保留的探讨,原问题如下:
在这里插入图片描述
页面长时间放置后台,或者在其他页面crash后,退到主页面,发现智护页面出现重叠。
该页面架构简单:主Activity对两个Fragment,一个智护Fragment,一个报告Fragment。

一、Activity创建时读取数据

正常情况下Activity的生命周期比较简单,这里就不详细叙述了,不清楚的可以自行百度~
Activity在创建的时候会执行生命周期的OnCreate方法,该方法的参数为Bundle类型。那么这个数据是从哪里得来的呢?

override fun onCreate(savedInstanceState: Bundle?) {
}
1、Activity如何保持数据

当横竖屏切换时,Activity会被销毁,生命周期方法onPause,onStop,onDestory等均会被调用,此时Activity属于异常情况下终止的,所以系统会调用onSaveInstanceState方法对Activity的状态进行保存。该方法在onStop之前调用,与onPause没有既定的时序关系。
当出现Crash时,除了其他的生命周期方法不会执行外,也会执行保存数据的操作。
当Activity被重新创建后,系统会调用onRestoreInstanceState,将之前onSaveInstanceState保存的数据Bundle传递给onRestoreInstanceState和onCreate方法,因此我们可以通过onRestoreInstanceState和onCreate方法判读Ac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值