android launcher开发(2)状态的保存与恢复
来源:互联网 发布:去痘印面膜 知乎 编辑:程序博客网 时间:2024/04/29 05:58
Launcher除了进行桌面应用程序的展示意外,还提供管理应用程序的功能。作为一个程序,launcher长期位于后台,因此他也可能遭遇到app的危机,当内存不足的时候遭受到系统的回收。那么问题来了,我们如何进行launcher状态的保存与恢复。
activity的状态保存
我们都知道,activiy是在onsaveInstanceState()中进行状态的保存。
onSaveInstanceState(Bundle outState)
我们就是通过outstate保存状态。
例如 应用程序窗口视图的层次,Fragment的状态信息
那么什么时候调用这个方法呢,一般是在onstop调用之前,但并不是说所有调用onstop()方法都会进行状态的保存。只有在activity覆盖,或者长时间没有操作,黑屏的时候。
有一点需要注意的是,如果我们点击打开一个dialog,而这个dialog是设置为dialog主题的activity,同样会触发。
launcher状态的保存
我们看下laucher 的onSaveInstanceState(Bundle outState)的代码
if (mWorkspace.getChildCount() > 0) { outState.putInt(RUNTIME_STATE_CURRENT_SCREEN, mWorkspace.getCurrentPageOffsetFromCustomContent()); } super.onSaveInstanceState(outState);//判断页数,如果大于一,那么保存当前的页数 outState.putInt(RUNTIME_STATE, mState.ordinal());// 枚举类型,保存launcher的状态,例如是否在应用程序菜单界面(); // We close any open folder since it will not be re-opened, and we need to make sure // this state is reflected. closeFolder(); if (mPendingAddInfo.container != ItemInfo.NO_ID && mPendingAddInfo.screenId > -1 && mWaitingForResult) { outState.putLong(RUNTIME_STATE_PENDING_ADD_CONTAINER, mPendingAddInfo.container); outState.putLong(RUNTIME_STATE_PENDING_ADD_SCREEN, mPendingAddInfo.screenId); outState.putInt(RUNTIME_STATE_PENDING_ADD_CELL_X, mPendingAddInfo.cellX); outState.putInt(RUNTIME_STATE_PENDING_ADD_CELL_Y, mPendingAddInfo.cellY); outState.putInt(RUNTIME_STATE_PENDING_ADD_SPAN_X, mPendingAddInfo.spanX); outState.putInt(RUNTIME_STATE_PENDING_ADD_SPAN_Y, mPendingAddInfo.spanY); outState.putParcelable(RUNTIME_STATE_PENDING_ADD_WIDGET_INFO, mPendingAddWidgetInfo); outState.putInt(RUNTIME_STATE_PENDING_ADD_WIDGET_ID, mPendingAddWidgetId);y
有一点需要注意到的是状态的保存与恢复并不是一一对应的关系。并不是说,调用了onSaveInstanceState就一定会进行状态的恢复。
launcher状态的恢复
public void onRestoreInstanceState(Bundle state) { /* * for循环恢复每一页的状态 * */ super.onRestoreInstanceState(state); for (int page: mSynchronouslyBoundPages) { mWorkspace.restoreInstanceStateForChild(page); } }
0 0
- android launcher开发(2)状态的保存与恢复
- Android状态保存与恢复
- Android保存状态(onSaveInstanceState)与恢复状态(onRestoreInstanceState)
- Android开发之保存和恢复Activity的状态与数据
- Android 如何保存与恢复自定义View的状态?
- Android基础之状态保存与恢复
- Activity状态的保存与恢复
- 保存与恢复activity的状态
- QPainter 的状态保存与恢复
- Android开发之恢复Activity与fragment的状态
- Activity : 状态保存与恢复
- Android状态保存与恢复流程 完全解析
- Android 状态保存与恢复流程 完全解析
- [译]Android Activity 和 Fragment 状态保存与恢复的最佳实践
- [译]Android Activity 和 Fragment 状态保存与恢复的最佳实践
- Android Activity 和 Fragment 状态保存与恢复的最佳实践
- Android Activity 和 Fragment 状态保存与恢复的最佳实践
- android launcher开发(4) Home键与launcher
- Apache Lucene初探
- RasSetAutodialAddress
- OS中的自映射问题
- Android,提供视频开发测试地址(视频下载和视频播放所用)
- linux 下的C动态库编写
- android launcher开发(2)状态的保存与恢复
- Android 利用Gradle实现app的环境分离
- 集成学习的方法及功能
- debug tensorflow / 使用gdb调试tensorflow底层C++代码
- POJ 4049 Chess 极大极小搜索 -
- Eclipse中Cannot nest src folder解决方法
- CCF计算机软件能力认证试题练习-门禁系统(Java参考答案学习记录)
- Android蓝牙4.0 BLE开发坑总结
- Android Studio多渠道打包和代码混淆教程