android.os.TransactionTooLargeException解决方案,Kotlin
android.os.TransactionTooLargeException解决方案,Kotlin
首先,特意制造一个让Android发生TransactionTooLargeException的场景,一个Activity启动另外一个Activity,在Intent的Bundle里面塞入一个大的ArrayList:
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.nio.charset.Charsetclass MainActivity : AppCompatActivity() {companion object {const val MY_KEY = "my_key"const val MY_BUNDLE = "my_bundle"}override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)val ctx = thisCoroutineScope(Dispatchers.IO).launch {val bytes = "z".toByteArray(Charset.defaultCharset())val count = 1024 * 1024val list = arrayListOf<ByteArray>()for (i in 0..count) {list.add(bytes)}val bundle = Bundle()bundle.putSerializable(MY_KEY, list)CoroutineScope(Dispatchers.Main).launch {val intent = Intent(ctx, MyTestActivity::class.java)intent.putExtra(MY_BUNDLE, bundle)startActivity(intent)}}}
}
被启动的MyTestActivity:
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivityclass MyTestActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)val bundle = intent.getBundleExtra(MainActivity.MY_BUNDLE)Log.d("fly", "MyTestActivity onCreate size=${bundle?.getSerializable(MainActivity.MY_KEY, ArrayList::class.java)?.size}")}
}
MainActivity运行起来后,应用直接崩溃抛错:

!!! FAILED BINDER TRANSACTION !!! (parcel size = 12583376)
Caused by: android.os.TransactionTooLargeException: data parcel size 12583376 bytes
因为Bundle传输的数据总量大小不能超过1MB,且应用内的Activity/Frgment共享这1MB。
解决方案
两边改造,换用Binder,参考( Android Bundle putBinder传输超过1MB数据,Kotlin-CSDN博客 ):
import android.content.Intent
import android.os.Binder
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.nio.charset.Charsetclass MainActivity : AppCompatActivity() {companion object {const val MY_KEY = "my_key"const val MY_BUNDLE = "my_bundle"}override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)val ctx = thisCoroutineScope(Dispatchers.IO).launch {val bytes = "z".toByteArray(Charset.defaultCharset())val count = 1024 * 1024val list = arrayListOf<ByteArray>()for (i in 0..count) {list.add(bytes)}val bundle = Bundle()bundle.putBinder(MY_KEY, MyBinder(list))CoroutineScope(Dispatchers.Main).launch {val intent = Intent(ctx, MyTestActivity::class.java)intent.putExtra(MY_BUNDLE, bundle)startActivity(intent)}}}
}class MyBinder : Binder {private var data: ArrayList<ByteArray>? = nullconstructor(data: ArrayList<ByteArray>?) {this.data = data}fun getData(): ArrayList<ByteArray>? {return data}
}
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivityclass MyTestActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)val bundle = intent.getBundleExtra(MainActivity.MY_BUNDLE)val binder = bundle?.getBinder(MainActivity.MY_KEY) as MyBinderLog.d("fly", "MyTestActivity onCreate size=${binder.getData()?.size}")}
}
MainActivity启动后,MyTestActivity成功收到通过Bundle传输的超大数据集:

Android TransactionTooLargeException排查定位-CSDN博客文章浏览阅读724次,点赞10次,收藏20次。文章浏览阅读422次。文章浏览阅读5.5k次。本文作者:Zhang Phil原文链接:Android Activity生命周期以及onSaveInstanceState、onRestoreInstanceState要点备忘一般的,当Android activity的生命周期进入onPause后,Android系统紧接着就要回调:protected void onSaveInstanceState_activity生命周期 onsaveinstane。https://blog.csdn.net/zhangphil/article/details/136745278
相关文章:
android.os.TransactionTooLargeException解决方案,Kotlin
android.os.TransactionTooLargeException解决方案,Kotlin 首先,特意制造一个让Android发生TransactionTooLargeException的场景,一个Activity启动另外一个Activity,在Intent的Bundle里面塞入一个大的ArrayList: import android.…...
ChatGPT智能聊天系统源码v2.7.6全开源Vue前后端+后端PHP
测试环境:Linux系统CentOS7.6、宝塔、PHP7.4、MySQL5.6,根目录public,伪静态thinkPHP,开启ssl证书 具有文章改写、广告营销文案、编程助手、办公达人、知心好友、家庭助手、出行助手、社交平台内容、视频脚本创作、AI绘画、思维导图等功能 ai通道:文心一言、MiniMax、智…...
汇丰:当前的美股是泡沫吗?
汇丰认为,当前的风险资产并不构成泡沫,更类似于2017年的市场环境,风险资产有望继续稳步上升。 隔夜美股飙涨,标普创三个月最大周涨,纳指收盘创历史新高。结合去年以来的强劲表现,有观点认为由科技股支撑的…...
颠覆传统:Web3如何塑造未来的数字经济
引言 近年来,随着数字化时代的到来,互联网已经成为人们生活中不可或缺的一部分。然而,随着技术的不断发展和社会的不断变迁,传统的Web2模式逐渐显露出一些弊端,如数据垄断、隐私泄露等问题,这促使人们寻求…...
iOS模拟器 Unable to boot the Simulator —— Ficow笔记
本文首发于 Ficow Shen’s Blog,原文地址: iOS模拟器 Unable to boot the Simulator —— Ficow笔记。 内容概览 前言终结模拟器进程命令行改权限清除模拟器缓存总结 前言 iOS模拟器和Xcode一样不靠谱,问题也不少。😂 那就有病治…...
使用 Flink + Faker Connector 生成测试数据压测 MySQL
博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…...
Android单片机硬件通信《GPIO通信》
一、什么是GPIO? GPIO(英语:General-purpose input/output),通用型输入输出端口,在单片机上一般是通过一个GND引脚和若干个io引脚配合工作。 单片机可以配置GPIO输入输出模式,与外界环境进行通信交互。在输入环境下&…...
C# WPF编程-事件
C# WPF编程-路由事件 路由事件概要路由事件的三种方式 WPF事件WPF最重要的5类事件:生命周期事件 鼠标事件键盘事件多点触控输入原始触控 路由事件概要 路由事件是具有更强传播能力的事件,它们可在元素树中向上冒泡和向下隧道传播,并沿着传播…...
C语言 预处理器 注释 基本案例讲解
上文 程序设计语言与C语言发展 我们简述了 计算机语言的发展 以及编程语言与指令的概念 那么 今天 我们就来 初始C语言 并完成 第一个C语言案例 这里 我们需要完成 C语言 Hello World案例 以及 C语言程序举例 任何编程语言 开始的案例 都是 Hello World 所以说 Hello World 是…...
Flutter学习10 - Json解析与Model使用
对于网络请求返回的 Json 数据,一般会进行如下解析: 将 Json String 解析为 Map<String, dynamic>将 Json String 解析为 Dart Model 发起一个返回 Json String 的网络请求 import package:http/http.dart as http;void main() {_doGet(); }_do…...
Clickhouse异常:Exception: No operation equals between Decimal(X, X) and Float64
在使用clickhouse中的Decimal类型存储数字时,使用Decimal类型字段作为查询条件时,比如: SELECT COUNT(*) AS total FROM table WHERE ( my_number10.2) 会报错如下:Exception: No operation equals between Decimal(X, X) and F…...
会员中心微服务
文章目录 1.环境配置1.创建会员中心模块2.检查父子模块的pom.xml1.父模块注意:如果父模块中的依赖显示not found,原因是子模块并没有引用,不用在意 2.子模块 3.pom.xml 引入相关依赖(别忘记刷新maven)4.application.ym…...
element el-dialog里再调用其他组件,查找不到组件的方法
需求描述:点击编辑按钮,跳出编辑弹窗,回显图片组件里面的图片问题:element el-dialog里再调用组件,打开该弹窗的瞬间找不到弹窗里调用子组件的方法原因:弹窗显示时,调用的子组件还没渲染出来所以…...
【深度学习】四种天气分类 模版函数 从0到1手敲版本
引入该引入的库 import torch import torch.nn as nn import matplotlib.pyplot as plt import torch.nn.functional as F import torchvision import torch.optim as optim %matplotlib inline import os import shutil import glob os.environ["KMP_DUPLICATE_LIB_OK&q…...
Linux文件 profile、bashrc、bash_profile区别
Linux系统中,有三种文件 出现的非常频繁,那就是 profile、bash_profile、bashrc 文件。 1、profile 作用 profile,路径:/etc/profile,用于设置系统级的环境变量和启动程序,在这个文件下配置会对所有用户…...
blender记一下法线烘焙
这里主要记一下使用cage的方式 原理 看起来是从cage发射射线,打中高模了就把对应uv那个地方的rgb改成打中的点的normal的rgb 正事 那么首先需要一个高模 主要是几何要丰富 无所谓UV 然后一个低模,既然上面提到UV,那低模就要展UV, 展完之后…...
【LabVIEW FPGA入门】FPGA 存储器(Memory)
可以使用内存项将数据存储在FPGA块内存中。内存项以2kb为倍数引用FPGA目标上的块内存。每个内存项引用一个单独的地址或地址块,您可以使用内存项访问FPGA上的所有可用内存。如果需要随机访问存储的数据,请使用内存项。 内存项不消耗FPGA上的逻辑资源&…...
vue3+element Plus form 作为子组件,从父组件如何赋值?
刚开始接触vue3时,碰到一个很low的问题,将form作为子组件,在页面中给form表单项输入内容,输入框不显示值,知道问题出在哪,但因为vue3组合式api不熟悉,不知从哪下手... 效果图: 父组…...
Kafka系列之:Exactly-once support
Kafka系列之:Exactly-once support 一、Sink connectors二、Source connectors三、Worker configuration四、ACL requirementsKafka Connect 能够为接收器连接器(从版本 0.11.0 开始)和源连接器(从版本 3.3.0 开始)提供一次性语义。请注意,对一次语义的支持高度依赖于您运…...
Spring Boot2
SpringBoot 配置文件 properties配置文件 application.properties 以配置端口和访问路径为例 server.port8080 yaml配置文件 application.yml / application.yaml server:port: 81 在实际开发中,更常用的是yaml配置文件 yaml层级表示更加明显 yml配置信息书…...
Stimulsoft 报告和仪表盘2026.2即将推出,来看具体详情
Stimulsoft Reports & Dashboards 2026.2 版本即将发布。本次更新将围绕报表查看器、数据源能力、参数验证以及仪表盘设计等多个方向展开,进一步增强产品在报表开发与可视化分析场景中的灵活性与智能化水平。 从 React 报表查看器,到由人工智能驱动…...
机器人在未来,能否走进千家万户?
——作为淮南的一名少儿编程老师,每天和孩子们打交道。课堂上,孩子们最常问我的问题之一就是:“老师,以后我家能买一个机器人吗?”每当这时,我都会想起自己小时候看《哆啦A梦》时的憧憬——谁不想拥有一个能…...
深蓝词库转换器:跨平台输入法词库一键迁移终极指南
深蓝词库转换器:跨平台输入法词库一键迁移终极指南 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 还在为更换输入法而烦恼吗?每次切换到新的…...
Linux I/O 演进史:从管道到零拷贝,一篇串起个服务端核心原语克
前言 在使用 kubectl get $KIND -o yaml 查看 k8s 资源时,输出结果中包含大量由集群自动生成的元数据(如 managedFields、resourceVersion、uid 等)。这些信息在实际复用 yaml 清单时需要手动清理,增加了额外的工作量。 使用 kube…...
千万级数据表优化:分库分表、分区、索引最佳实践生产实战
本文适合:后端开发、DBA、面试准备、线上性能调优。全文干货无废话,覆盖索引设计、分区实战、分库分表落地、生产踩坑,可直接发布 CSDN。 前言 在互联网业务高速增长的今天,单表数据量突破千万、甚至上亿已经非常普遍。很多项目初…...
如何深度调试AMD Ryzen系统:SMUDebugTool完整指南与故障排除
如何深度调试AMD Ryzen系统:SMUDebugTool完整指南与故障排除 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: http…...
Git-RSCLIP模型快速入门:10分钟实现第一个图文检索应用
Git-RSCLIP模型快速入门:10分钟实现第一个图文检索应用 1. 引言 你是不是经常遇到这样的情况:电脑里存了几千张照片,想找某张特定的图片却怎么也找不到?或者想用文字描述来搜索相关的图片,但传统的关键词搜索总是不够…...
电商人必备!AI净界RMBG-1.4批量处理商品图,效率提升10倍
电商人必备!AI净界RMBG-1.4批量处理商品图,效率提升10倍 1. 电商人的痛点:每天被抠图折磨的日子 做电商的朋友,下面这个场景你一定不陌生: 早上9点,运营发来50张新款T恤的实拍图,要求今天下班…...
SpringBoot的生命周期原理分析之一SpringBoot准备容器与环境
目录 1.SpringBootApplication准备 1.1SpringApplication创建 1.2.1保存主配置源 1.2.2推断Web环境 1.2.3设置初始化器 1.2.4设置监听器 1.2.5确定主启动类 1.2.6扩展了解:SpringBoot的发展 1.2SpringBootApplication启动 1.2.1启动计时与全局异常处理机制…...
Flux Sea Studio 海景摄影生成工具:LaTeX技术文档编写——生成高质量海景插图与科研论文配图实践
Flux Sea Studio 海景摄影生成工具:LaTeX技术文档编写——生成高质量海景插图与科研论文配图实践 写论文、编教材,最头疼的事情之一就是找配图。要么是找不到合适的,要么是找到了但版权不明晰,要么就是风格不统一,七拼…...
