【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之间调用的,没有版本区别。

相关推荐
sakoba1 小时前
MySQL的json处理相关方法
android·学习·mysql·json
神仙别闹1 小时前
Android 端 2D 横屏动作冒险类闯关游戏
android·游戏
坏小虎1 小时前
Android App Startup 库使用说明文档,初始化不再用Application了...
android
lichong9518 小时前
Android studio 修改包名
android·java·前端·ide·android studio·大前端·大前端++
爱学习的大牛12311 小时前
MVVM 架构 android
android·mvvm
alexhilton13 小时前
理解retain{}的内部机制:Jetpack Compose中基于作用域的状态保存
android·kotlin·android jetpack
꒰ঌ 安卓开发໒꒱14 小时前
Mysql 坏表修复
android·mysql·adb
_李小白14 小时前
【Android Gradle学习笔记】第八天:NDK的使用
android·笔记·学习
袁震14 小时前
Android-Compose 列表组件详解
android·recyclerview·compose
2501_9160074715 小时前
提升 iOS 26 系统流畅度的实战指南,多工具组合监控
android·macos·ios·小程序·uni-app·cocoa·iphone