为什么要介绍这2个方法呢?这是因为在我们的开发中最近遇到了一个很诡异的bug.大体是这样的:在我们的ViewPager中 有2页的root view都是ScrollView,我们在xml里面都用了android:id="@+id/scroll_view"这样的代码,即2个布局里面的 ScrollView用了同一个id.我们重载了ScrollView的onSaveInstanceState()用来save当前的scrollX和scrollY,在使用过程中 发现restore回来的时候其中…
1. 基本作用: Activity的 onSaveInstanceState() 和 onRestoreInstanceState()并不是生命周期方法,它们不同于 onCreate().onPause()等生命周期方法,它们并不一定会被触发.当应用遇到意外情况(如:内存不足.用户直接按Home键)由系统销毁一个Activity时,onSaveInstanceState() 会被调用. 但是当用户主动去销毁一个Activity时,例如在应用中按返回键,onSaveInstanceState()就…
本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceState(),并且在介绍这两个方法之后,再分别来实现使用InstanceState保存和恢复数据功能.Android实现屏幕旋转异步下载效果这样两个示例.   首先来介绍onSaveInstanceState() 和 onRestoreInstanceState() .关于这两个方法,一些朋友可能在Android开发过程中很少用到,但在有时候掌握其用法会…
Android Activity的onSaveInstanceState() 和 onRestoreInstanceState()方法: 1. 基本作用: Activity的 onSaveInstanceState() 和 onRestoreInstanceState()并不是生命周期方法,它们不同于 onCreate().onPause()等生命周期方法,它们并不一定会被触发.当应用遇到意外情况(如:内存不足.用户直接按Home键)由系统销毁一个Activity时,onSaveInstance…
onSaveInstanceState()和onRestoreInstanceState()两个方法,在Activity中是比较容易忽视的方法,但是不得不说还是比较好用的方法,onSaveInstanceState() 可以帮我们当一个活动不小心被杀掉后,可以帮我们回到原来的位置,通常情况下,  onSaveInstanceState() 只适用于保存一些临时的状态.然而onRestoreInstanceState()没有经常的使用,所以也就先不介绍了.   一:onSaveInstanceSt…
首先来介绍onSaveInstanceState() 和 onRestoreInstanceState() .关于这两个方法,一些朋友可能在Android开发过程中很少用到,但在有时候掌握其用法会帮我们起到比较好的效果.尤其是在应用程序在不知道的情况下退出后,如何实现其数据保存的功能.先来让我们看下这两个方法的有什么样的作用. 1. 基本作用:  Activity的 onSaveInstanceState() 和 onRestoreInstanceState()并不是生命周期方法,它们不同于 o…
转 https://www.jianshu.com/p/27181e2e32d2 背景 如果系统由于系统约束(而不是正常的应用程序行为)而破坏了Activity,那么尽管实际 Activity实例已经消失,但是系统还是会记住它已经存在,这样如果用户导航回到它,系统会创建一个新的实例的Activity使用一组保存的数据来描述Activity在被销毁时的状态.系统用于恢复以前状态的已保存数据称为"实例状态",是存储在Bundle对象中的键值对的集合. 解决 onSaveInstanceSt…
本文摘自: http://h529820165.iteye.com/blog/1399023 Android calls onSaveInstanceState() before the activity becomes vulnerable to being destroyed by the system, but does not bother calling it when the instance is actually being destroyed by a user action…
先看Application Fundamentals上的一段话:    Android calls onSaveInstanceState() before the activity becomes vulnerable to being destroyed by the system, but does not bother calling it when the instance is actually being destroyed by a user action (such as pr…
之所以有这个话题,是因为工作遇到过两个问题.一个问题是页面空白,fragment重复创建.另一个问题是登录页用到了AutoCompleteTextView,调用showDropDown()方法导致crash. 1. onSaveInstanceState() 和 onRestoreInstanceState()并不配对 2.触发时机 onSaveInstanceState()(1).当用户按下HOME键时.(2).长按HOME键,选择运行其他的程序时. (3).按下电源按键(关闭屏幕显示)时.(…
当某个activity变得“容易”被系统销毁时,该activity的onSaveInstanceState就会被执行,除非该activity是被用户主动销毁的,例如当用户按BACK键的时候. 注意上面的双引号,何为“容易”?言下之意就是该activity还没有被销毁,而仅仅是一种可能性.这种可能性有哪些?通过重写一个activity的所有生命周期的onXXX方法,包括onSaveInstanceState和onRestoreInstanceState方法,我们可以清楚地知道当某个activity…
首先Android的Activity生命周期如下图: Activity的onSaveInstanceState()和onRestoreInstanceState()并不是生命周期方法,他们不同于onCreate(),onPause()等生命周期,并不是一定会被触发.当应用遇到意外情况(内存不足,用户直接按HOME键,pause,stop ) 由系统销毁一个Activity时,onSavenstanceState()会被调用,Activity由运行状态进入暂停或者停止状态也会调用该方法.但是当用户…
support.v4 包为我们提供了一个非常实用的滑动控件ViewPager,在使用ViewPager时有一个需要注意的地方: 即: android.support.v4.view.ViewPager.onSaveInstanceState 空指针等等... 错误如下: ... Caused by: java.lang.NullPointerException at android.support.v4.view.ViewPager.onSaveInstanceState(ViewPager.j…
Activity的 onSaveInstanceState() 和 onRestoreInstanceState()并不是生命周期方法,它们不同于 onCreate().onPause()等生命周期方法,它们并不一定会被触发. 当应用遇到意外情况(如:内存不足)由系统销毁一个Activity时,onSaveInstanceState() 会被调用. 但是当用户主动去销毁一个Activity时,例如在应用中按返回键,onSaveInstanceState()就不会被调用.因为在这种情况下,用户的行…
先看Application Fundamentals上的一段话:    Android calls onSaveInstanceState() before the activity becomes vulnerable to being destroyed by the system, but does not bother calling it when the instance is actually being destroyed by a user action (such as pr…
先看Application Fundamentals上的一段话: Android calls onSaveInstanceState() before the activity becomes vulnerable to being destroyed by the system, but does not bother calling it when the instance is actually being destroyed by a user action (such as press…
转自:http://www.cnblogs.com/heiguy/archive/2010/10/30/1865239.html 1.原文 先看Application Fundamentals上的一段话: Android calls onSaveInstanceState() before the activity becomes vulnerable to being destroyed by the system,but does not bother calling it when the…
为了弄清楚onSaveInstanceState()方法和onRestoreInstanceState()方法,我翻译一下谷歌的API,翻译如下: There are a few scenarios in which your activity is destroyed due to normal app behavior, such as when the user presses the Back button or your activity signals its own destruc…
import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; public final class MultiRes extends Activity { private int mCurrentPhotoIn…
在Activity中,有两个方法用于临时保存.恢复状态信息,这两个方法是: public void onSaveInstanceState(Bundle savedInstanceState); public void onRestoreInstanceState(Bundle savedInstanceState); 关于这两个方法的描述不是本文要说明的内容,请参考开发者网站!:) 以下几种情况会调用onSaveInstanceState,分别是: 用户按下HOME键: 长按HOME键,选择运…
http://www.cnblogs.com/tianzhijiexian/p/3885472.html…
我的收藏 他山之石,可以攻玉 转载请注明出处:https://ahangchen.gitbooks.io/windy-afternoon/content/ 开发过程中收藏在Chrome书签栏里的技术文章,与自己的文章分开. 主要涉及python,android,ubuntu等内容,我自己常常在这里面找回忘了的知识. Chrome书签导出markdown的方法可以在这里查看 python What's New In Python 3.0 - Python v3.1.5 documentation…
一.onSaveInstanceState Called to retrieve per-instance state from an activity before being killed so that the state can be restored in onCreate(Bundle) or onRestoreInstanceState(Bundle) (the Bundle populated by this method will be passed to both). Thi…
当某个activity变得“容易”被系统销毁时,该activity的onSaveInstanceState就会被执行,除非该activity是被用户主动销毁的,例如当用户按BACK键的时候. 注意上面的双引号,何为“容易”?言下之意就是该activity还没有被销毁,而仅仅是一种可能性.这种可能性有哪些?通过重写一个activity的所有生命周期的onXXX方法,包括onSaveInstanceState和onRestoreInstanceState方法,我们可以清楚地知道当某个activity…
英文原文: http://trickyandroid.com/saving-android-view-state-correctly/ 转载此译文须注明出处. 今天我们聊一聊安卓中保存和恢复view状态的问题.我刻意强调View状态是因为我发现这个过程要比保存 Activity 和 Fragment状态稍微复杂,还有一个原因是因为网上有太多“重复造的轮子”(有时还是奇丑无比的轮子). 为什么我们需要保存View的状态? 这个问题问的好!我坚信移动应用应该帮助你解决问题,而不是制造问题. 想象一下…
在activity(或者是fragement)被杀掉之前调用保存每个实例的状态,以保证该状态可以在onCreate(Bundle)或者onRestoreInstanceState(Bundle) (传入的Bundle参数是由onSaveInstanceState封装好的)中恢复.这个方法在一个activity被杀死前调用,当该activity在将来某个时刻回来时,可以恢复其先前状态.例如,如果activity B启用后位于activity A的前端,在某个时刻activity A因为系统回收资源…
如果你是一个有经验的 Android 程序员,那么你肯定手写过许多 onSaveInstanceState 以及 onRestoreInstanceState 方法用来保持 Activity 的状态,因为 Activity 在变为不可见以后,系统随时可能把它回收用来释放内存.重写 Activity 中的 onSaveInstanceState 方法 是 Google 推荐的用来保持 Activity 状态的做法. Google 推荐的最佳实践 onSaveInstanceState 方法会提供给…
记清楚函数调用的顺序才能准确地进行调用. 根据调用链,可将整个绘制过程分为三部分:Measure - Layout - Draw Measure 过程 1. 测量过程由上至下,在measure过程的最后,每个视图将存储自己的尺寸大小和测量规格. 2. measure过程会为一个View及其所有子节点的mMeasureWidth和mMeasuredHeight变量赋值, 该值可以通过getMeasuredWidth和getMeasuredHeight方法获得. 3. measure过程的核心方法:…
为什么我们需要保存View的状态? 这个问题问的好!我坚信移动应用应该帮助你解决问题,而不是制造问题. 想象一下一个非常复杂的设置页面: 这并不是从一个移动应用的截图(这不是典型的win32程序吗..),但是适合用于说明我们的问题: 这里有非常多的文字输入控件,多选框,开关(switch)等等,你花了15分钟填完所有这些格子,总算轮到点击"完成"按钮了,但是突然,你不小心旋转了下屏幕,omg,所有的改动都没了,一切都回归到了初始状态. 当然,总有一些用户喜欢你的app简直到不行,不在乎…
首先来介绍一下这个自定义View: (1)这个自定义View的名称叫做 GradientTab ,继承自View类: (2)这个自定义View实现了颜色渐变的Tab导航栏(仿微信主菜单),用户在左右滑动的时候,当前页对应的Tab逐渐变淡,目标页的Tab逐渐变深: (3)用户可以在XML布局中自定义变色的颜色.图标.文本.文本大小.文本颜色.图文间隔等属性. 接下来简单介绍一下在这个自定义View中用到的技术点: (1)自定义属性: (2)在 onMeasure() 方法中对View进行测量: (…