【Android】关于Activity的onSaveInstanceState生命周期

最近笔者求职时面试一家大厂,被问到Activity的生命周期,其中面试官着重问了onSaveInstanceState的调用是在onStop之前还是之后,本人当时有点蒙圈,之前也没有关注它到底是在OnStop之前还是之后。

但是这个方法在什么时候调用的重要吗?我们只是用它来保存数据的,然后在onRestoreInstanceState来恢复数据。

先不管重不重要,既然面试官问到了,自己也不知道,那么就去验证一下。

后来笔者亲自写代码验证了,发现是在onStop之后调用的,同时也在网上看了别人的答案,发现很多资料写的是在onPause之后,onStop之前调用。难道本人亲自验证的不靠谱吗?

然后笔者就去Google官网查了一下它的官方说明,看完之后,大吃一惊。原来这个onSaveInstanceState方法还有很多学问呢!

先截图:

从官方说明可以看出,这个方法是Activity被系统杀掉时用来保存数据,我们可以在Activity恢复时在onCreate或者onRestoreInstanceState生命周期中恢复数据。

重点是最后一段说明中指出如果onSaveInstanceState被调用了,应用的目标平台是Android P(9)的话,onSaveInstanceState就是在onStop之后调用,如果目标平台是Android 9之前,onSaveInstanceState就是在onStop之前调用,并且不保证是在onPause之前还是之后调用。

这下终于知道为什么自己验证时是在onStop之后,网上个人资料说是在onStop之前了。

那么onRestoreInstanceState是否也有类似的区别的呢?

看情况这个方法是在onStartonPostCreate之间调用的,没有版本区别。

相关推荐
TechNomad37 分钟前
Kotlin_Lambda编程详解
android·kotlin
熊猫_豆豆1 小时前
QT6 Android C++ 自制美观闹钟
android·c++·qt·闹钟
美狐美颜SDK开放平台1 小时前
Android/iOS直播APP平台开发中的视频美颜SDK优化技巧
android·ios·音视频·美颜sdk·第三方美颜sdk
聚美智数4 小时前
黄历查询-运势查询-国际法定节假日查询-API接口介绍
android·java·数据库
私人珍藏库6 小时前
[Android] 一木百宝箱-万能百宝箱+抖音去水印等几百种功能
android·人工智能·app·软件·多功能
wupa6 小时前
在 enableEdgeToEdge 模式下处理软键盘与自定义面板协同
android
plainGeekDev8 小时前
ProGuard → R8
android·java·kotlin
雨白8 小时前
C 语言字符串:从字符数组、指针到核心操作实战
android
Java小白笔记9 小时前
MySQL中存储过程大表分批删除历史数据
android·mysql·adb
aidou13149 小时前
Kotlin中沉浸式状态栏显示布局
android·kotlin·windowmanager·沉浸式状态栏·insetslistener·insetscompat·systembars