本文章是基于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

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

被折叠的 条评论
为什么被折叠?



