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

OnSaveInstanceState不保存实例

OnSaveInstanceState是Android开发中的一个方法,用于保存Activity或Fragment的实例状态。当系统因为配置变化(如屏幕旋转)或内存不足而销毁并重新创建Activity或Fragment时,可以使用OnSaveInstanceState方法保存当前实例的状态,以便在重新创建后恢复。

OnSaveInstanceState方法通常在Activity或Fragment的生命周期方法onSaveInstanceState中调用。它接收一个Bundle参数,可以将需要保存的数据存储在Bundle中。这些数据可以是基本类型(如整数、字符串等),也可以是自定义对象。

在Activity或Fragment重新创建后,可以通过onCreate或onCreateView方法的savedInstanceState参数获取之前保存的状态数据。可以使用这些数据来还原界面的状态,以保证用户体验的连续性。

OnSaveInstanceState的使用可以帮助开发者处理屏幕旋转等配置变化时的数据保存和恢复问题,提升应用的用户体验。

在腾讯云的产品中,与OnSaveInstanceState相关的产品是云服务器CVM。云服务器CVM是腾讯云提供的弹性计算服务,可以为开发者提供可扩展的计算能力。通过使用云服务器CVM,开发者可以将应用部署在云端,实现高可用性和弹性扩展。具体产品介绍和相关链接如下:

需要注意的是,OnSaveInstanceState方法只能保存有限的数据量,不适合保存大量或敏感数据。对于大量数据的保存,可以考虑使用其他持久化方案,如数据库或文件存储。对于敏感数据,建议使用加密等方式进行保护。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android:保存 & 恢复Activity 状态缓存 - onSaveInstanceState()、onRestoreInstanceState()

阅读本文可了解 Activity如何保存临时数据 & 状态 Activity如何恢复临时数据 & 状态 Activity如何保存临时数据 & 状态 1....Activity A是否会被销毁,故系统会调用onSaveInstanceState(),下面所说的所有情况该遵循这原则 ?...super.onSaveInstanceState(savedInstanceState); } 补充说明: 布局每1个View默认实现:onSaveInstanceState(),即UI的任何改变都会自动的存储和在...activity重新创建的时候自动的恢复(只有在为该UI提供了唯一ID后才起作用) 若需复写该方法从而存储额外的状态信息时,应先调用父类的onSaveInstanceState()(因为默认的onSaveInstanceState...的bundle参数会传递到onCreate方法中,可选择在onCreate()中做数据还原 至此,关于Activity的临时数据 & 状态 保存 & 恢复,讲解完毕。

3.1K30

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

或者 onRestoreInstanceState 中保存的数据; -- 注意 : 只有是系统自动回收的时候才会保存 Bundle 对象数据; -- Bundle 对象来源 : onCreate()...方法中的 Bundle 对象参数, 是在 onSaveInstance() 或者 onRestoreInstanceState() 方法中保存的 Bundle 对象; . (2) onSaveInstanceState...(Bundle outState) 方法 outState 参数作用 :  -- 数据保存 : Activity 声明周期结束的时候, 需要保存 Activity 状态的时候, 会将要保存的数据使用键值对的形式...方法调用注意事项 :  -- 用户主动销毁不会调用 : 当用户点击回退键 或者 调用了 finish() 方法, 不会调用该方法; -- 调用时机不固定 : 该方法一定是在 onStop() 方法之前调用...注意, 只有有 id 的组件才会保存; -- 关于默认的 super.onSaveInstanceState(outState) : 该默认的方法是实现 组件状态保存的; (3) onRestoreInstanceState

40720
  • 保存数据返回后可以继续编辑

    一般来说, 调用onPause()和onStop()方法后的activity实例仍然存在于内存中, activity的所有信息和状态数据不会消失, 当activity重新回到前台之后, 所有的改变都会得到保留...但是当系统内存不足时, 调用onPause()和onStop()方法后的activity可能会被系统摧毁, 此时内存中就不会存有该activity的实例对象了....如果需要保存额外的数据时, 就需要覆写onSaveInstanceState()方法....如需要保存类中成员变量的值(见上例). onSaveInstanceState()方法适合保存什么数据 由于onSaveInstanceState()方法方法不一定会被调用, 因此不适合在该方法中保存持久化数据...保存持久化数据的操作应该放在onPause()中. onSaveInstanceState()方法只适合保存瞬态数据, 比如UI控件的状态, 成员变量的值等.

    818100

    Android开发笔记(三十九)Activity的生命周期

    onSaveInstanceState : 保存实例状态。...使用场景:1、从A视图跳转到B视图,需要保存A视图的状态(不考虑特殊情况);2、屏幕从竖屏变为横屏,需要保存竖屏时的视图状态,从横屏变为竖屏亦然;3、当前Activity处于后台,系统因资源紧张将其杀死...onRestoreInstanceState : 恢复实例状态。使用场景:1、屏幕从竖屏变为横屏,横屏显示时需要恢复之前保存的竖屏状态;2、activity后台运行被系统杀死。...但出于效率考虑,我们有时希望对栈的操作能够不按顺序处理,所以也就有了启动模式launchMode。...; 3、singleTask与singleInstance的区别:待跳转的activity已有实例位于栈中时,singleTask会把该实例上面的所有实例予以清除,而singleInstance不处理它上面的实例

    70340

    onSaveInstanceState() 和 onRestoreInstanceState()方法

    但是当用户主动去销毁一个Activity时,例如在应用中按返回键,onSaveInstanceState()就不会被调用。 因为在这种情况下,用户的行为决定了不需要保存Activity的状态。...通常onSaveInstanceState()只适合用于保存一些临时性的状态,而onPause()适合用于数据的持久化保存。...在activity被杀掉之前调用保存每个实例的状态,以保证该状态可以在onCreate(Bundle)或者onRestoreInstanceState(Bundle) (传入的Bundle参数是由onSaveInstanceState...这是显而易见的,系统不知道你按下HOME后要运行多少其他的程序,自然也不知道activity A是否会被销毁,故系统会调用onSaveInstanceState,让用户有机会保存某些非永久性的数据。...的调用遵循一个重要原则,即当系统“未经你许可”时销毁了你的activity,则onSaveInstanceState会被系统调用,这是系统的责任,因为它必须要提供一个机会让你保存你的数据(当然你不保存那就随便你了

    44130

    Activity 不只有跳转。功能篇(一)

    (只要是在A上的实例全部出栈,如ABCD,需要用到B,此时栈中AB,CD出栈) SingleInstance:对于设置该模式的活动(Activity),会创建一个实例保存在新的返回栈中,这是因为可供其他的程序调用这个活动...1.配置改变导致Activity被杀死,横屏变竖屏:在onStop之前会调用onSaveInstanceState()保存数据在重建Activity之后,会在onStart()之后调用onRestoreInstanceState...在stop()之前系统会调用onSaveInstanceState()方法,以便您的Activity可以使用一组键值对来保存状态信息。...@Override public void onSaveInstanceState(Bundle savedInstanceState) { // 保存用户自定义的状态 savedInstanceState.putInt...系统通过您的Activity中恢复您的保存状态。

    1.2K20

    Android 应用保存状态

    Android 应用保存状态 最近开发的 Android 应用中需要添加保存用户状态的功能, 经过查阅 Android 的文档, 保存用户状态的几种方法如下: 1、 使用 Bundle 保存界面状态 Android...最先找到的文档就是通过 Activity 的 onSaveInstanceState 和 onRestoreInstanceState 方法来保存用户状态, 虽然最终测试发现这种方法不是肯靠谱, 还是记录下来了...onSaveInstanceState 保存状态 当系统销毁 Android 程序, 进行内存回收时, 会调用 Activity 的 onSaveInstanceState 方法, 传入一个 Bundle...实例参数, 通过重写这个方法, 可以保存 Activity 的状态, 示例代码如下: protected override void OnSaveInstanceState(Bundle outState...) { base.OnSaveInstanceState(outState); outState.PutInt("main_activity_click_count", _count);

    92720

    onSaveInstanceState和onRestoreInstanceState详解

    通常onSaveInstanceState()只适合用于保存一些临时性的状态,而 onPause()适合用于数据的持久化保存。...在activity被杀掉之前调用保存每个实例的状态,以保证该状态可以在 onCreate(Bundle)或者onRestoreInstanceState(Bundle) (传入的Bundle参数是由onSaveInstanceState...如果需要保存额外的数据时, 就需要覆写onSaveInstanceState()方法。...大家需要注意的是:onSaveInstanceState()方法只适合保存瞬态数据, 比如UI控件的状态, 成员变量的值等,而不应该用来保存持久化数据,持久化数据应该当用户离开当前的 activity...由于onSaveInstanceState()方法方法不一定会被调用, 因此不适合在该方法中保存持久化数据, 例如向数据库中插入记录等. 保存持久化数据的操作应该放在onPause()中。

    2.2K50

    Android基础 | 关于Activity你应该明白的一切

    当Actiivty 被重新创建后,系统会调用 onRestoreInstanceState, 并且吧 Activity 销毁时 onSaveInstanceState 方法保存的 Bundle 对象作为参数同时传递给...onSaveInstanceState与ViewModel 在上面我们知道,当Activity因为异常情况发生重建时,系统会主动调用 onSaveInstanceState 方法来进行保存,但需要注意的是...onSaveInstanceState 并不适合于保存大量数据,Google的推荐是用其来保存相应的id及key,而相应的大量数据推荐使用ViewModel进行保存。...既然使用ViewModel进行保存了,那 onSaveInstanceState 的意义还有什么?...onSaveInstanceState 是为了保存应用进程在后台时候由于内存限制而被终止,或者配置更改时的回调,其 默认实现是保存了关于 activity的视图层次状态的临时信息,比如EditText中输入的文本

    76520

    “终于懂了“系列:Jetpack AAC完整解析(三)ViewModel 完全掌握!

    对于简单的数据,Activity 可以使用 onSaveInstanceState() 方法保存 然后从 onCreate() 中的Bundle恢复数据,但此方法仅适合可以序列化再反序列化的少量数据(IPC...四、对比onSaveInstanceState() 系统提供了onSaveInstanceState()用于让开发者保存一些数据,以方便界面销毁重建时恢复数据。...这是显而易见的,系统不知道你按下HOME后要运行多少其他的程序,自然也不知道activity A是否会被销毁,故系统会调用onSaveInstanceState,让用户有机会保存某些非永久性的数据。...总而言之,onSaveInstanceState的调用遵循一个重要原则,即当系统“未经你许可”时销毁了你的activity,则onSaveInstanceState会被系统调用,这是系统的责任,因为它必须要提供一个机会让你保存你的数据...(当然你不保存那就随便你了)。

    1.8K10

    Activity详解(二)——异常情况下的生命周期分析

    当系统配置发生改变后,Activity会被销毁,其onPause,onStop,onDestroy均会被调用,由于Activity是在异常情况下终止的,系统会调用onSaveInstanceState来保存当前...来保存当前Activity的状态。...当系统重建的时候会调用onRestoreInstanceState这个方法,并且把Activity销毁时onSaveInstanceState方法所保存的Bundle对象作为参数同时传递给onRestoreInstanceState...关于保存和恢复View层次结构,系统的工作流程是这样的:首先Activity被意外终止时,Activity会调用onSaveInstanceState去保存数据,然后Activity会委托Window去保存数据...比如我们上文提到的旋转屏幕所造成的Activity异常销毁,这个过程和正常停止Activity是不一样的,因为旋转屏幕后,Activity被销毁的同时会立刻创建Activity实例,这个时候Activity

    1.8K40

    Fragment 重叠 遮盖问题 完美解决

    1.导致Fragment 重叠 和遮盖的原因  主要还是因为Fragment的状态保存机制,当系统内存不足时,Fragment的主Activity被回收,Fragment的实例并没有随之被回收。...Activity被系统回收时,会主动调用onSaveInstance()方法来保存视图层(View Hierarchy),所以当Activity通过导航再次被重建时,之前被实例化过的Fragment依然会出现在...3.onSaveInstanceState()与onRestoreInstanceState()这两个方法。...接着通过调查资料发现Activity中的onSaveInstanceState()里面有一句super.onRestoreInstanceState(savedInstanceState),Google...对于这句话的解释是“Always call the superclass so it can save the view hierarchy state”,大概意思是“总是执行这句代码来调用父类去保存视图层的状态

    1.3K20

    《Android编程权威指南》之UI状态的保存与恢复篇

    只在activity实例对象被创建后,才需要获取和保存QuizViewModel,也就是说,quizViewModel一次只赋一个值。...3.1 覆盖onSaveInstanceState(Bundle)函数 通过覆盖Activity.onSaveInstanceState(Bundle)的方式,就可以解决上述问题,当应用进程在意外被系统...通常,覆盖onSaveInstanceState(Bundle)函数,在Bundle对象中,保存当前activity小的或暂存状态的数据;覆盖onStop()函数,保存永久性数据,比如用户编辑的文字等。...如图设置: 不保留活动 四、ViewModel与保存实例状态 保留实例状态和ViewModel都不是长期存储解决方案。...因此,要处理设备配置更改 加上 系统发起的进程终止 两种情况,就结合使用 ViewModel 和 onSaveInstanceState() 方式来保存数据状态。

    63010
    领券