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

相关推荐
d***93530 分钟前
springboot3.X 无法解析parameter参数问题
android·前端·后端
s***11706 小时前
Mysql convert函数、convert用法、字符串转数字、字符串转日期、类型转换函数
android·数据库·mysql
n***26566 小时前
【MySQL】MVCC详解, 图文并茂简单易懂
android·数据库·mysql
程序猿陌名!7 小时前
Android-EDLA RK3576谷歌ATTESTION-KEY从申请到烧录以及验证谷歌认证标志全流程
android
安卓理事人7 小时前
安卓版本升级功能
android
s***35307 小时前
怎么下载安装yarn
android·前端·后端
z***94847 小时前
使用rustDesk搭建私有远程桌面
android·前端·后端
q***06297 小时前
【细如狗】记录一次使用MySQL的Binlog进行数据回滚的完整流程
android·数据库·mysql
0***86337 小时前
图文详述:MySQL的下载、安装、配置、使用
android·mysql·adb
9***44637 小时前
SQLyog安装配置(注册码)连接MySQL
android·mysql·adb