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

相关推荐
又见情义12 分钟前
记一次 RK3568 Android 13 蓝牙反复重启问题的排查与修复
android
hai_android31 分钟前
Kotlin Flow combine 源码剖析:一个 Channel 如何优雅合并多条流
android·java·kotlin
敲代码的瓦龙2 小时前
Jetpack?ViewModel!!!
android·开发语言·kotlin·android-studio
Godikov2 小时前
Android 工控终端实战:从秒级卡顿到毫秒响应,SQLite/LitePal 性能优化全记录
android
星间都市山脉4 小时前
Android16 SystemService.onBootPhase 调用时机
android·java·linux·windows·ubuntu
swithun4 小时前
不用 WebView,我用 Kotlin + Compose Multiplatform 重写 Mermaid,并做了 2048 组对拍
android·开源·kotlin
AI吃大瓜5 小时前
人脸检测和行人检测4:Android实现YOLOv8 YOLO11 YOLO26人脸检测和人体检测(含源码,可实时检测)
android·yolo·人脸检测·人体检测·行人检测·yolo26
与海boy5 小时前
Prompt模版
android·prompt
FlightYe5 小时前
音视频修炼之编码器(一):AVC、HEVC编码器内部
android·linux·c++·音视频
智购科技无人售货机工厂5 小时前
2026自动售货机AI智能体架构:从47个小模型到33.7亿Token的工程实践~YH
android·人工智能·驱动开发·单片机·pandas