最近笔者求职时面试一家大厂,被问到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
之间调用的,没有版本区别。