Activity异常情况下的数据保存
来源:互联网 发布:淘宝怎么更改店铺地址 编辑:程序博客网 时间:2024/05/16 07:09
onSaveInstanceState和onRestoreInstanceState方法前者是用来异常保存数据的,后者是用来恢复数据的,
@Override protected void onSaveInstanceState(Bundle outState) { // TODO Auto-generated method stub super.onSaveInstanceState(outState); outState.putString("test", "test"); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onRestoreInstanceState(savedInstanceState); String test = savedInstanceState.getString("test"); Log.e("test", test); }
对于Activity被意外终止时,Activity会调用onSaveInstanceState去保存数据,然后Activity会委托Window去保存数据,window再委托它上面的顶级容器去保存数据,最后顶层容器通知各自的View保存数据,这个比较类似事件分发。
protected void onSaveInstanceState(Bundle outState) { outState.putBundle(WINDOW_HIERARCHY_TAG, mWindow.saveHierarchyState()); Parcelable p = mFragments.saveAllState(); if (p != null) { outState.putParcelable(FRAGMENTS_TAG, p); } getApplication().dispatchActivitySaveInstanceState(this, outState); }
查看Android源码我知道,每个View都有onSaveInstanceState和onRestoreInstanceState这两个方法,
如在TextView,我们可以看到保存的信息状态,可以看出,保存了自己的文本内容和文本的选中状态
@Override public Parcelable onSaveInstanceState() { Parcelable superState = super.onSaveInstanceState(); // Save state if we are forced to boolean save = mFreezesText; int start = 0; int end = 0; if (mText != null) { start = getSelectionStart(); end = getSelectionEnd(); if (start >= 0 || end >= 0) { // Or save state if there is a selection save = true; } } if (save) { SavedState ss = new SavedState(superState); // XXX Should also save the current scroll position! ss.selStart = start; ss.selEnd = end; if (mText instanceof Spanned) { Spannable sp = new SpannableStringBuilder(mText); if (mEditor != null) { removeMisspelledSpans(sp); sp.removeSpan(mEditor.mSuggestionRangeSpan); } ss.text = sp; } else { ss.text = mText.toString(); } if (isFocused() && start >= 0 && end >= 0) { ss.frozenWithFocus = true; } ss.error = getError(); return ss; } return superState; }
最常见的是手机横竖屏切换导致activity异常终止,我们可以指定Activity的configChanges的属性为orientation在版本号大于13的时候需要添加另一个screenSize来保证Activity在切换的时候不被销毁。
0 0
- Activity异常情况下的数据保存
- 异常情况下Activity数据的保存和恢复
- activity异常生命周期下的退出数据保存的方法
- 异常情况下的Activity生命周期
- Activity异常情况下的生命周期
- Activity异常情况下的生命周期
- Activity异常情况下的生命周期分析
- activity销毁重建情况下异步任务数据保存恢复
- 1.Activity正常和异常情况下的生命周期分析
- 2.Activity异常情况下的生命周期分析学习笔记
- 【安卓笔记】成长第一步,Activity在正常情况下与异常情况下的生命周期
- 异常情况下Activity生命周期分析
- Activity异常情况下生命周期分析
- Activity的突发情况下退出恢复数据
- 发送一个字符'1'时,异常情况下的数据
- activity的onPause保存数据
- 保存Activity的临时数据
- activity异常情况生命周期的分析
- 阅读代码时,用excel做笔记。
- 【DVB】SI
- FFC 119 .html() 与 .text() 区别
- linux 查看crontab任务执行情况
- android recycleview edittext 加减框联动 多重效果
- Activity异常情况下的数据保存
- POST和GET 请求 (XML)
- 个人所得税征收计算公式
- Xcode上传失败No suitable application records were found
- java知识总结(十三)网络编程
- 1.3 大型网站架构演化的价值观[读书敲录]
- 【Java】DecimalFormat的主要功能及使用方法
- 一个 Q-learning 算法的简明教程
- Java 学习