首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Android 应用开发】Activity 状态保存 OnSaveInstanceState参数解析

相关方法介绍  (1) onCreate(Bundle savedInstanceState) 方法 Activity 创建时回调 : 该方法会自动传入一个 Bundle 对象, 该 Bundle 对象就是上次被系统销毁时在...对象来源 : onCreate() 方法中的 Bundle 对象参数, 是在 onSaveInstance() 或者 onRestoreInstanceState() 方法中保存的 Bundle 对象...状态的时候, 会将要保存的数据使用键值对的形式 保存在 Bundle 对象中; -- 恢复数据 : 在 Activity 的 onCreate()方法 创建 Activity 的时候会传入一个 Bundle...组件状态保存的; (3) onRestoreInstanceState(Bundle savedInstanceState) 方法 方法回调时机 : 在 Activity 被系统销毁之后 恢复 Activity...= null) System.out.println("onCreate() : " + savedInstanceState.getString("octopus")); } @Override

40720

Android-活动的生命周期(二)

修改主活动的布局和代码,加入两个按钮,分别用于启动NormalActivity和DialogActivity。 然后重写Activity的7个回调方法,分别打印相应的语句。...但是A中可能存有临时数据,这样数据也会丢失。Activity提供了一个onSaveInstanceState()回调方法,这个方法保证活动在被回收之前一定会被调用。..., 第一个参数是键,用于后面从Bundle中取值, 第二个参数是真正要保存的内容, 在MainActivity添加以下代码,将临时数据保存: @Override protected void onSaveInstanceState...null,但是如果活动被系统回收之前有通过onSaveInstanceState()方法保存数据的话,这个参数就会带有之前保存的全部数据,只需要通过相应的取值方法将数据取出即可,修改MainActivity...的onCreate()方法, @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState

37720
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Activity生命周期

    我们来回顾一下关于Activity的知识点,这个是面试中最常问的问题之一,Activity也是Android中四大组件,最重要的一个组件,我们在实际开发中,需要我们开发者理解它的生命周期还有对启动模式特殊场景的使用...生命周期 那七个方法你不可能不熟悉: onCreate->onRestart->onStart->onResume->onPause->onStop->onDestory Activity的创建和销毁都会回调这七个方法...引入两个方法 onSaveInstanceState onRestoreInstanceState 一般情况下,这两个方法不会被执行,那什么时候会执行?...后台Activity,优先级最低 上面两种情形导致Activity被销毁,这时我们可以通过上面说的两个方法进行数据的保存和恢复,例如: /** * 正常情况不会回调这个方法 * Activity...); Log.d(TAG, "onCreate"); // 可以在onCreate方法内进行数据恢复,但需要判断是否为null if (savedInstanceState

    52930

    Android后台杀死系列之一:FragmentActivity及PhoneWindow后台杀死处理机制

    ,在异常杀死的情况下onCreate(Bundle savedInstanceState)函数的savedInstanceState参数也不是null,而是包含了被杀死时所保存的场景信息。...: 为什么Fragment没有无参构造方法会引发崩溃 看一下support-V4中FragmentActivity中onCreate代码如下: protected void onCreate(@Nullable...Bundle savedInstanceState) { mFragments.attachHost(null /*parent*/); super.onCreate(savedInstanceState...oncreate函数中: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState...现在回归正题,对于后台杀死状态下,为什么会show两个DialogFragment呢,我们需要接着看就要Fragment的异常处理的流程,在Fragment没有无参构造方法会引发崩溃里面,分析只是走到了

    3.1K30

    不需要再手写 onSaveInstanceState 了,因为你的时间非常值钱

    如果你是一个有经验的 Android 程序员,那么你肯定手写过许多 onSaveInstanceState 以及 onRestoreInstanceState 方法用来保持 Activity 的状态,因为...重写 Activity 中的 onSaveInstanceState 方法 是 Google 推荐的用来保持 Activity 状态的做法。...Google 推荐的最佳实践 onSaveInstanceState 方法会提供给我们一个 Bundle 对象用来保存我们想保存的值,但是 Bundle 存储是基于 key - value 这样一个形式...(savedInstanceState); } 保存完状态之后,为了能在系统重新实例化这个 Activity 的时候恢复先前被系统杀死前的状态,我们在 onCreate 方法里把原来保存的值重新取出来:...再也不需要写烦人的回调,因为你的时间非常值钱!

    34310

    Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案

    Android会在销毁你的Activity之前调用onSaveInstanceState()方法,于是,你可以在此方法中存储关于应用状态的数据。...然后你可以在onCreate()或onRestoreInstanceState()方法中恢复。 b、如果是大量数据,使用Fragment保持需要恢复的对象。 c、自已处理配置变化。...中启动一个异步任务去加载数据,这里使用Thread.sleep模拟了一个耗时操作;当用户旋转屏幕发生重新启动时,会onSaveInstanceState中进行数据的存储,在onCreate中对数据进行恢复...总使用了Volley去加载 了一张美女照片,然后在onDestroy中对Bitmap进行存储,在onCreate添加一个或者恢复一个Fragment的引用,然后对Bitmap进行读取和设置。...当然了,运行过程中Activity不断的重启,我们也提供了setActivity方法,onDestory时,会setActivity(null)防止内存泄漏,同时我们也会关闭与其绑定的加载框;当onCreate

    2.1K20

    Android Activity 活动的生命周期

    生命周期 Activity 类中定义了7 个回调方法,覆盖了活动生命周期的每一个环节。以下7 个方法中除了onRestart()方法,其他都是两两相对的。 onCreate()。...这个方法在系统准备去启动或者恢复另一个活动的时候调用。我们通常会在这个方法中将一些消耗CPU 的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用。...---- 活动被回收前的数据保存与恢复 onSaveInstanceState()回调方法可以保证在活动被回收之前一定会被调用,因此我们可以通过这个方法来解决活动被回收时临时数据得不到保存的问题。...这个参数在一般情况下都是null,但是如果在活动被系统回收之前有通过onSaveinstanceState()方法来保存数据的话,这个参数就会带有之前所保存的全部数据。...@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState)

    77420

    安卓activity生命周期_请描述activity的生命周期

    典型情况下的生命周期(就是我们开发中经常用到的) 异常情况下的生命周期(虽说开发中也会用到,但是并不是所有的项目都会去(需要)回调异常生命周期的方法) 所以我们先来介绍前者,因为后者出现的情况比较特殊。...典型情况下的生命周期。(官网的流程图肯定是要看的,一张图包含了一个Activity从创建到销毁所经历的一切) 先总结一下有什么生命周期回调方法以及各个生命周期回调方法都是代表什么意思。...代码验证: 代码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState...在这种情况下,你可以实现onSaveInstanceState回调方法对有关 Activity 状态的信息进行保存,以确保有关 Activity 状态的重要信息得到保留。...具体地讲,默认实现会为布局中的每个View 调用相应的onSaveInstanceState方法,让每个视图都能提供有关自身的应保存信息。

    57410

    037android初级篇之Activity的几个重要函数

    该方法在View类中的定义,并且所有的View子类全部重写了该方法,应用程序可以通过该方法处理手机屏幕的触摸事件。该方法的签名如下所示。...返回值:该方法的返回值机理与键盘响应事件的相同,同样是当已经完整地处理了该事件且不希望其他回调方法再次处理时返回true,否则返回false。...即被回调,除非该activity是被用户主动销毁的,例如当用户按BACK键的时候。...另外,onRestoreInstanceState的bundle参数也会传递到onCreate方法中,也可以选择在onCreate方法中做数据还原。...以A->B为例,A中onSaveInstanceState调用发生在A:onPause -> B:onCreate -> B:onResume -> A:onSaveInstanceState -> A

    75420

    安卓中activity的生命周期_产品生命周期五个阶段

    打印如下: 根据activity的复杂度,也许不需要实现所有的生命周期方法。但了解每一个方法的回调时机并在其中填充相应功能,使得确保app能够像用户期望的那样执行是很有必要的。...(savedInstanceState); } Note: 必须要调用 onSaveInstanceState() 方法的父类实现,这样默认的父类实现才能保存视图状态的信息。...onCreate() 与 onRestoreInstanceState() 回调方法都接收到了同样的Bundle,里面包含了同样的实例状态信息。...由于 onCreate() 方法会在第一次创建新的Activity实例与重新创建之前被Destory的实例时都被调用,我们必须在尝试读取 Bundle 对象前检测它是否为null。...下面是一个示例:演示在onCreate方法里面恢复一些数据: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate

    69310

    Android Activity生命周期整理

    方法是android程序初始化最先执行的回调方法,因此,所有的界面初始化工作,以及任何APP所需的资源初始化工作要在该方法下完成。...= null) { mCamera.release(); mCamera = null; } } 但一般情况下,也并非保存所有的用户数据,除非用户是希望当离开APP时...null // No WHERE columns are used. ); } 记得,在onRestart方法中,重新获得这些数据即可。但是否所有的用户数据需要保存呢?...但为了以防万一,还是建议使用onStart方法,并且在onStart方法中,要注意当前的系统环境是否支持某些初始化操作。...当下次app重启时,在onCreate方法和onRestoreInstanceState方法中,都能够重新加载信息。有两个地方供我们提取出之前维护的信息,选择其中一个方法即可。

    85030

    Android入门教程之Activity(生命周期,启动...)

    优先级低的Activity在内存不足被回收后怎样做可以恢复到销毁前状态? 优先级低的 Activity 在内存不足被回收后重新打开(横竖屏切换的过程中)会引发Activity重建。...但需要注意的是,在 onCreate 取出数据时一定要先判断savedInstanceState 是否为空。...补充:其中 onCreate 和 onRestoreInstanceState 方法来恢复 Activity 的状态的区别: onRestoreInstanceState 方法回调则说明 bundle...方法中传入的 Bundle 对象是销毁时 onSaveInstanceState 保存的,onRestoreIntanceState 在 onStart之后。...singleTask模式:当启动的Activity存在于任务栈中,会回调onNewIntent方法。 13. 了解哪些Activity启动模式的标记位?

    1.1K00

    Activity

    被销毁后其中的数据当然就没了,如果需要保留这些数据可调用 方法 onSaveInstanceState()方法 @Override public void onSaveInstanceState(Bundle...回调方法说明 先说一下上图的方法: onCreate() :创建Activity ,可以在这里进行初始一些视图和数据 onStart(): 启动Activity ,这里你就可以看到 这个activity...当前activity1跳往到activity2 ,activity就会把activity1覆盖,这时就调用了此方法 onRestart(); 重新启动 onDestroy():activity再结束前调用的最后一个方法...;这里可以进行一些释放资源的操作 三种阶段 完整生命周期: 从调用的第一个方法 onCreate() 到最后调用一个的方法onDestroy() ,在onCreate()方法中可以进行一些全局的配置,UI...的引用,数据的初始化,也可以从savedInstanceState中读取 保存在设备中或者执行reCreate方法前保存的数据等前提savedInstanceSate不为null,在onDestroy(

    98060

    1.2、Activity的状态保存

    在这种情况下,您可以通过回调方法onSaveInstanceState()来保存Activity的一些重要信息,并通过onCreate()或者onRestoreInstanceState()回调方法来恢复这些信息...); Log.d("roamer", "onSaveInstanceState"); } @Override protected void onCreate(Bundle savedInstanceState...注意:并不是每一次Activity销毁,系统都回去回调onSaveInstanceState()方法,我们是我们自己finish掉该Activity,那么onSaveInstanceState()方法就不会被调用...具体来说,默认的实现会帮我们调用该Activity布局中每个View的onSaveInstanceState()方法。...View中的onSaveInstanceState()方法体如下: //View的onRestoreInstanceState()方法 //该方法允许每个View提供自己需要保存的信息 @Override

    86330

    生命周期感知 Lifecycle

    对于上面显示位置的例子,就可以让 MyLocationListener 实现 LifecycleObserver ,并在 Activity 的生命周期方法 onCreate()里初始化。...{ super.onCreate(savedInstanceState) lifecycleRegistry = LifecycleRegistry(this)...(Bundle savedInstanceState) { super.onCreate(savedInstanceState); lifecycleRegistry...不幸的是,在 onSaveInstanceState() 之后调用了 AppCompatActivity 的 onStop() 方法,这留下了一个空白,在该空白中,不允许 UI 状态更改,但生命周期尚未移至...为避免此问题,版本 beta2 及更低版本中的 Lifecycle 类将状态标记为 CREATED 而不调度事件,因此,即使直到系统调用了 onStop() 才调度事件,任何检查当前状态的代码都将获得真实值

    1.2K20
    领券