【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是否也有类似的区别的呢?

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

相关推荐
朱涛的自习室5 小时前
我给 Gemini 4 和 DeepSeek 搞了套「末位淘汰」,AI 干活会更猛吗?(Day 3)
android·前端·后端
应用市场11 小时前
离线小游戏做“每日挑战”:日期当随机种子,整局存成 JSON,再加一个“我不是机器人”
android·kotlin·游戏开发
一铭1119912 小时前
海豹办公 1.9.15 跨端办公软件实践 文档兼容 Access 数据库与移动 WebView 排错
android·数据库·electron·开源软件·access
geats人山人海12 小时前
java 7异常
android·java·开发语言
2601_9620710013 小时前
Kimi K3 vs DeepSeek V4-Pro实测对比:2026年同一入口十道题,耗时与token消耗差在哪
android·java·数据库
右手吉他14 小时前
高通平台IA APN问题分析之二
android·物联网
夜雪一千15 小时前
MySQL 自增 ID 的底层原理与坑点
android·mysql·adb
不浪费一个字节15 小时前
一个纯 Python 实现的 APK 解析与设备操控工具箱
android
itmigrate15 小时前
PHP 导出大 CSV 时内存溢出的一次排查
android·开发语言·php
hai_android16 小时前
LiveEventBusCore 跨 Activity 通讯源码解析
android·kotlin·android jetpack