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

onSaveInstanceState调用时的TransactionTooLargeException

onSaveInstanceState是Android中的一个方法,用于保存Activity或Fragment的状态数据,以便在配置变化(如屏幕旋转)或系统资源不足时恢复数据。当调用onSaveInstanceState时,系统会将状态数据保存在Bundle对象中,并在需要时传递给onCreate或onActivityCreated方法。

TransactionTooLargeException是一个异常类,表示在调用onSaveInstanceState时,Bundle对象的大小超过了系统所允许的限制。这个异常通常发生在保存大量数据或大型对象时,导致Bundle对象过大而无法传递。

解决TransactionTooLargeException的方法有以下几种:

  1. 减少保存的数据量:可以通过只保存必要的数据,而不是保存整个对象或大量数据来减小Bundle对象的大小。
  2. 使用其他方式保存数据:如果数据量过大无法通过Bundle传递,可以考虑使用其他方式保存数据,如使用数据库或文件存储。
  3. 使用ViewModel:ViewModel是Android架构组件之一,用于在配置变化时保持数据的一致性。通过将数据保存在ViewModel中,可以避免使用Bundle传递数据的限制。
  4. 使用Parcelable或Serializable接口:如果需要保存自定义对象,可以实现Parcelable或Serializable接口,将对象转换为字节流或序列化形式,然后保存在Bundle中。
  5. 使用分页加载:如果数据量过大,可以考虑使用分页加载的方式,每次只加载部分数据,而不是一次性加载全部数据。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云数据库(TencentDB):提供高性能、可扩展的数据库服务,支持多种数据库引擎,如MySQL、SQL Server、MongoDB等。详情请参考:https://cloud.tencent.com/product/cdb
  • 腾讯云对象存储(COS):提供安全可靠的云端存储服务,适用于存储和管理各种类型的文件和数据。详情请参考:https://cloud.tencent.com/product/cos
  • 腾讯云容器服务(TKE):提供高度可扩展的容器化应用管理平台,支持快速部署、弹性伸缩和自动化运维。详情请参考:https://cloud.tencent.com/product/tke

请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估和决策。

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

相关·内容

Android Intent 传递数据大小限制

{ public TransactionTooLargeException() { super(); } public TransactionTooLargeException...数据以Parcel对象形式存放在Binder传递缓存中。 如果数据或返回值比传递buffer大,则此次传递调用失败并抛出TransactionTooLargeException异常。...多个地方在进行传输时,即时它们各自传输数据不超出大小限制,TransactionTooLargeException异常也可能会被抛出。 在使用Intent传递数据时,1Mb并不是安全上限。...在其它地方,例如onSaveInstanceState(@NonNull Bundle outState),也可能会遇到与Binder有关类似问题。...为什么Binder要限制传输数据大小 个人推测,作为一种IPC方式,Binder并不是为传输大量数据而设计。 传输大量数据,可以考虑URL之类方法。

1.6K30

Android Intent传递数据大小限制详解

{ public TransactionTooLargeException() { super(); } public TransactionTooLargeException(...数据以Parcel对象形式存放在Binder传递缓存中。 如果数据或返回值比传递buffer大,则此次传递调用失败并抛出TransactionTooLargeException异常。...多个地方在进行传输时,即时它们各自传输数据不超出大小限制,TransactionTooLargeException异常也可能会被抛出。 在使用Intent传递数据时,1Mb并不是安全上限。...在其它地方,例如onSaveInstanceState(@NonNull Bundle outState),也可能会遇到与Binder有关类似问题。...参考 stackoverflow.com/questions/8… developer.android.com/reference/a… 总结 以上就是这篇文章全部内容了,希望本文内容对大家学习或者工作具有一定参考学习价值

2.5K20
  • onSaveInstanceState和onRestoreInstanceState触发时机

    通过重写一个activity所有生命周期onXXX方法,包括onSaveInstanceState和onRestoreInstanceState方法,我们可以清楚地知道当某个activity(假定为...activity A)显示在当前task最上层时,其onSaveInstanceState方法会在什么时候被执行,有这么几种情况: 1、当用户按下HOME键时。...这是显而易见,系统不知道你按下HOME后要运行多少其他程序,自然也不知道activity A是否会被销毁,故系统会调用onSaveInstanceState,让用户有机会保存某些非永久性数据。...调用遵循一个重要原则,即当系统“未经你许可”时销毁了你activity,则onSaveInstanceState会被系统调用,这是系统责任,因为它必须要提供一个机会让你保存你数据(当然你不保存那就随便你了...至于onRestoreInstanceState方法,需要注意是,onSaveInstanceState方法和onRestoreInstanceState方法“不一定”是成对被调用,onRestoreInstanceState

    70470

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

    相关方法介绍  (1) onCreate(Bundle savedInstanceState) 方法 Activity 创建时回 : 该方法会自动传入一个 Bundle 对象, 该 Bundle 对象就是上次被系统销毁时在... onSaveInstanceState 或者 onRestoreInstanceState 中保存数据; -- 注意 : 只有是系统自动回收时候才会保存 Bundle 对象数据; -- Bundle...对象, 这个 Bundle 对象就是这个 outState 参数; 调用时机 : Activity 容易被销毁时候调用, 注意是容易被销毁, 也可能没有销毁就调用了; -- 按下Home键 : Activity...() 方法, 在调用函数时候, 会自动保存组件状态, 注意, 只有有 id 组件才会保存; -- 关于默认 super.onSaveInstanceState(outState) : 该默认方法是实现...组件状态保存; (3) onRestoreInstanceState(Bundle savedInstanceState) 方法 方法回时机 : 在 Activity 被系统销毁之后 恢复 Activity

    38920

    onAppear 用时

    本文将通过 SwiftUI 4 提供新 API ,证明 onAppear 用时机是在布局之后、渲染之前。问题同之前多篇博客类似,我们还是从 聊天室 一个 问题 开始。...在写 SwiftUI 视图生命周期研究 一文时,我们只能通过现象来推断 onAppear 用时机,随着版本不断提高,SwiftUI 4 中为我们提供了足够工具让我们可以获得更加确实证据。...,并通过它生命周期回方法来确定当前状态。...整合有了上面的工具,通过下面的代码,我们便可以完整地了解一个 SwiftUI 视图处理过程,以及 onAppear 用时机。...,此时 newWords 已经有值了,ForEach 将正常处理所有的子视图总结在本文中,我们通过 SwiftUI 4 提供新工具明确了 onAppear 用时机,或许这是新 API 开发时未曾想到功能应用

    2.1K20

    onAppear 用时

    本文将通过 SwiftUI 4 提供新 API ,证明 onAppear 用时机是在布局之后、渲染之前。 问题 同之前多篇博客类似,我们还是从 聊天室 一个 问题开始。...在写 SwiftUI 视图生命周期研究[6] 一文时,我们只能通过现象来推断 onAppear 用时机,随着版本不断提高,SwiftUI 4 中为我们提供了足够工具让我们可以获得更加确实证据...,并通过它生命周期回方法来确定当前状态。...整合 有了上面的工具,通过下面的代码,我们便可以完整地了解一个 SwiftUI 视图处理过程,以及 onAppear 用时机。...重复上面的过程,此时 newWords 已经有值了,ForEach 将正常处理所有的子视图 总结 在本文中,我们通过 SwiftUI 4 提供新工具明确了 onAppear 用时机,或许这是新

    1.1K10

    再看Android官方文档之Activity&Intent

    如果activity含有在onCreate调用时创建后台线程,或者是其他有可能导致内存泄漏资源,则应该在OnDestroy()时进行资源清理,杀死后台线程。...极端情况下,系统会直接杀死app进程而并不执行activityonDestroy()回方法(系统内存紧张不在此情况下), 因此我们需要使用onStop()来释放资源,从而避免内存泄漏。...跳转到其他activity或者是点击Home都会导致当前activity执行onSaveInstanceState。...必须要调用 onSaveInstanceState() 方法父类实现,这样默认父类实现才能保存视图状态信息。...恢复Activity onRestoreInstanceState onCreate与 onRestoreInstanceState回方法都接能收到onSaveInstanceStateBundle

    54660

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

    典型情况下生命周期。(官网流程图肯定是要看,一张图包含了一个Activity从创建到销毁所经历一切) 先总结一下有什么生命周期回方法以及各个生命周期回方法都是代表什么意思。...(长按home键退出应用不走onDestroy回方法,但是会走onSaveInstanceState方法,后面会讲) V/MAIN_ACTIVITY: onPause ---> 即将暂停时调用 V/MAIN_ACTIVITY...在这种情况下,你可以实现onSaveInstanceState方法对有关 Activity 状态信息进行保存,以确保有关 Activity 状态重要信息得到保留。...调用时机:当用户按下HOME键时、长按HOME键,选择运行其他程序时、按下电源按键(关闭屏幕显示)时、从activity A中启动一个新activity时、屏幕方向切换时,例如从竖屏切换到横屏时。...--> test 总结:注意:onSaveInstanceState用时序在onStop之前,但是和onPause 用时序就不一定了,有可能在onPause之前或者之后。

    56310

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

    由上图我们可以看出,onSaveInstanceState用时机是在onStop之前,需要说明是这个方法只会出现在Activity被异常终止情况下,正常情况下系统不会回这个方法。...,onRestoreInstanceState用时机是在onStart之后。...关于保存和恢复View层次结构,系统工作流程是这样:首先Activity被意外终止时,Activity会调用onSaveInstanceState去保存数据,然后Activity会委托Window去保存数据...针对onSaveInstanceState方法还需要有一点说明,那就是系统只会在Activity即将被销毁并且有机会重新显示情况下才会调用它。...当Activity正常销毁时候,系统不会调用onSaveInstanceState,因为被销毁Activity不可能再次被显示。

    1.8K40

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

    onSaveInstanceState与OnRestoreInstance用时机 在在点击home...onSaveInstanceState用时onSaveInstanceState函数是Android针对可能被后台杀死Activity做一种预防,它执行时机在2.3之前是在onPause之前...OnRestoreInstanceState用时机 之前已经说过,OnRestoreInstanceState虽然与onSaveInstanceState是配对实现,但是其调用却并非完全成对,在...如果没有被异常杀死,不走Activity恢复新建流程,也就不会回OnRestoreInstanceState,简单看一下Activity加载流程图: onRestoreInstance调用时机.png...可以看出,OnRestoreInstanceState用时机是在onStart之后,在onPostCreate之前。

    3K30

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

    核心方法 onSaveInstanceState() 2. 调用时机 当系统 未经你许可 时,可能 销毁了你Activity,则会被系统调用 。...super.onSaveInstanceState(savedInstanceState); } 补充说明: 布局每1个View默认实现:onSaveInstanceState(),即UI任何改变都会自动存储和在...activity重新创建时候自动恢复(只有在为该UI提供了唯一ID后才起作用) 若需复写该方法从而存储额外状态信息时,应先调用父类onSaveInstanceState()(因为默认onSaveInstanceState...()帮助UI存储它状态) 只使用该方法记录Activity瞬间状态(UI状态),而不是去存储持久化数据,因为onSaveInstanceState()调用时机不确定性;可使用 onPause...调用时机 当系统“未经你许可”时,确实销毁了你Activity,则重新启动时会被系统调用 特别说明: 与onSaveInstanceState()区别:此处是 “确实销毁”后才调用 若是 被用户主动销毁

    3.1K30

    几种取数据摘要算法用时对比

    今天写程序过程中需要对数据比较校验两次数据是否一致,于是要采用数据摘要算法。...于是我测试了一下几种常用算法对同一数据摘要计算用时,测试结果如下: MD4算法 15ms,31ms,219ms,1139 MD5算法 31ms,31ms,280ms,1513ms SHA1算法...11825ms RipeMD128算法 47ms,47ms,468ms,2543ms RipeMD160算法 78ms,78ms,780ms,4118ms (数据仅供参考) 4个测试数据前两个为我屏幕截图位图...,大小3mb左右,第三个测试数据为37.2mbexe电子书; 最后一个数据是cs1.6exe安装程序,大小为198mb。...测试结果发现CRC32算法有很大优势,CRC32结果是4字节整数,理论上重复概率是 1/0xFFFFFFFF, 大概就是2亿分之一。CRC既然被广泛使用,说明其在特定范围内重复概率是比较低

    71220

    函数调用时栈是如何变化

    大家都知道函数调用是通过栈来实现,而且知道在栈中存放着该函数局部变量。但是对于栈实现细节可能不一定清楚。本文将介绍一下在Linux平台下函数栈是如何实现。...如图所示,栈是由高地址向地地址方向生长,而且栈有其栈顶和栈底,入栈出栈地方就叫做栈顶。 在x86系统CPU中,rsp是栈指针寄存器,这个寄存器中存储着栈顶地址。rbp中存储着栈底地址。...函数调用时 进入sum函数后,我们看到函数前两行: push %rbp mov %rsp,%rbp 这两条汇编指令含义是:首先将rbp寄存器入栈,然后将栈顶指针rsp赋值给rbp。...该寄存器中存储着栈中一个地址(原rbp入栈后栈顶),从该地址为基准,向上(栈底方向)能获取返回地址、参数值,向下(栈顶方向)能获取函数局部变量值,而该地址处又存储着上一层函数调用时rbp值。...由于rbp中地址处总是“上一层函数调用时rbp值”,而在每一层函数调用中,都能通过当时%rbp值“向上(栈底方向)”能获取返回地址、参数值,“向下(栈顶方向)”能获取函数局部变量值。

    3.3K21

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

    实际使用来说,他们看起来的确差不多,但是 onStart和onStop 是从Activity是否可见这个角度来回,而 onResume 和 onPause是从Actvity是否位于前台这个角度来回...这个方法用时机是在 onStop 之前,它和onPause 没有既定时序关系,有可能在onPause之前调用,也有可能在 onPause之后调用。...但需要注意是,这个方法只会出现在 Activity 被异常终止情况下。正常情况下不会回这个方法。...用时机在 onStart之后。...onSaveInstanceState 是为了保存应用进程在后台时候由于内存限制而被终止,或者配置更改时,其 默认实现是保存了关于 activity视图层次状态临时信息,比如EditText中输入文本

    74120

    第1章-Activity生命周期和启动模式(上)

    — pause 注意点: A 启动 B 如果B是透明Activity,那么AonStop不会被调用 异常状态 Activity销毁与重建涉及到这两方法: onSaveInstanceState(...,就会调用onSaveInstanceState 而onRestoreInstanceState则是重建时候被调用 调用时onSaveInstanceState 在onStop之前调用,而不一定在...onRestoreInstanceState onResume onPause onSaveInstanceState onStop onDestroy PS:onSaveInstanceState如下情况会调用...ABC—启动C->ABC SingleTop 栈顶复用模式,如果新Activity已位于栈顶,那么不会重新创建Activity,而是回onNewIntent方法 onNewIntent-->onResume...ABC—启动C→ ABC SingleTask 栈内复用模式,只要占中存在都不会重新创建,并且也是回onNewIntent 另外需要注意是,该模式拥有clearTop 效果,会把位于它顶上Activity

    43440

    1.2、Activity状态保存

    在这种情况下,您可以通过回方法onSaveInstanceState()来保存Activity一些重要信息,并通过onCreate()或者onRestoreInstanceState()回方法来恢复这些信息...注意:并不是每一次Activity销毁,系统都回去回onSaveInstanceState()方法,我们是我们自己finish掉该Activity,那么onSaveInstanceState()方法就不会被调用...并且系统调用onSaveInstanceState()方法时机一般是在onStop()之前,但是也有可能是onPause之前。...Activity状态保存默认机制 然而,即使我们不重写onSaveInstanceState()方法,Activity对于onSaveInstanceState()方法默认实现,仍然会帮我们恢复某些状态...具体来说,默认实现会帮我们调用该Activity布局中每个ViewonSaveInstanceState()方法。

    85530
    领券