Activity的onSaveInstanceState调用时机
来源:互联网 发布:邻家女孩在淘宝有店吗 编辑:程序博客网 时间:2024/05/17 00:51
Activity为我们提供了两个回调方法onSaveInstanceState和onRestoreInstanceState 用于当Activity在不是用户主动意识关闭的情况下来进行页面数据的保存和恢复。
那么那些情况下onSaveInstanceState会被调用呢?这个就是写个Demo就会一目了然了。分别有以下几种情况:
1、当用户按下Home键 app处于后台,此时会调用onSaveInstanceState 方法
2、当用户按下电源键时,会调用onSaveInstanceState 方法
3、当Activity进行横竖屏切换的时候也会调用onSaveInstanceState 方法
4、从BActivity跳转到CActivity的时候 BActivity也会调用onSaveInstanceState 方法
虽然以上四种情况会执行onSaveInstanceState 方法 但是并不是都会执行onRestoreInstanceState方法,只有第三种情况会调用onRestoreInstanceState,因为当Activity横竖屏切换的时候会重新走一遍其生命周期,所以Activity会被销毁创建。由此会执行onRestoreInstanceState方法。
也就是说onSaveInstanceState和onRestoreInstanceState并不是一定成双出现的,终于当Activity真正的被销毁的时候才会执行onRestoreInstanceState。
而其他情况Activity只是暂居后台,并没有被销毁,所以系统不会调用onRestoreInstanceState。
另外如何进行数据存储和恢复呢?
系统提供了Bundle对象进行数据的存储。
@Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString("key", "哈哈哈哈哈"); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String key = savedInstanceState.getString("key"); Log.e("TAG", "===key====" + key); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); String key = savedInstanceState.getString("key"); Log.e("TAG", "===key====" + key); }
接受到Bundle后对其进行解析即可。
- Activity的onSaveInstanceState调用时机
- Activity的onSaveInstanceState调用时机
- Activity的onSaveInstanceState调用时机的说明
- activity的onSaveInstanceState的调用时机
- activity 中的 onSaveInstanceState方法的调用时机
- activity 中的 onSaveInstanceState方法的调用时机
- activity 中的 onSaveInstanceState方法的调用时机
- activity 中的 onSaveInstanceState方法的调用时机
- 【Android翻译】关于Activity的onSaveInstanceState调用时机的说明
- 关于Activity的onSaveInstanceState调用时机的说明
- 【Android翻译】关于Activity的onSaveInstanceState调用时机的说明
- 关于Activity的onSaveInstanceState调用时机的说明
- 关于Activity的onSaveInstanceState调用时机的说明
- 【Android翻译】关于Activity的onSaveInstanceState调用时机的说明
- 【Android翻译】关于Activity的onSaveInstanceState调用时机的说明
- 关于Activity的onSaveInstanceState调用时机的说明
- Android翻译】关于Activity的onSaveInstanceState调用时机的说明
- Activity的onSaveInstanceState和onRestoreInstanceState调用的时机
- Linux用户及文件权限管理
- 红帽Linux安装ffmpeg
- python pandas详解
- Fragment 之间的跳转、返回
- [LeetCode]226. Invert Binary Tree
- Activity的onSaveInstanceState调用时机
- python中read() readline()以及readlines()区别
- Litepal查询数据并按两个类别排序
- PANDAS 数据合并与重塑(concat篇)
- java编程思想读书笔记-第八章 接口和内部类
- sql练习题
- MTF算法
- CMake Tutorial(7)——Adding Support for a Dashboard
- L2-016. 愿天下有情人都是失散多年的兄妹-PAT团体程序设计天梯赛GPLT