当前位置: 首页 > 知识库问答 >
问题:

Android.os.TransactionToolargeException:数据包大小牛轧糖错误

谷梁永年
2023-03-14

我正在使用reverfit进行api调用,我从服务器得到了几乎不到30KB大小的JSON响应。当JSON将响应解析为一个复杂对象时,它会抛出这个错误。

java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 1098852 bytes
    at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:161)
    at android.os.Handler.handleCallback(Handler.java:883)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:7356)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
 Caused by: android.os.TransactionTooLargeException: data parcel size 1098852 bytes
    at android.os.BinderProxy.transactNative(Native Method)
    at android.os.BinderProxy.transact(BinderProxy.java:510)
    at android.app.IActivityTaskManager$Stub$Proxy.activityStopped(IActivityTaskManager.java:4524)
    at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:145)
    at android.os.Handler.handleCallback(Handler.java:883) 
    at android.os.Handler.dispatchMessage(Handler.java:100) 
    at android.os.Looper.loop(Looper.java:214) 
    at android.app.ActivityThread.main(ActivityThread.java:7356) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

如果我尝试将响应存储在对象类中,然后通过LinkedHashMap获取值,我就能够获取数据。但是,这将是一个繁琐的过程。

有谁能帮我弄清楚这里的问题是什么,以及如何找到解决办法吗?

根据我的研究,这种情况只发生在版本>=牛轧糖的android设备上。在这个下面,它就像小菜一碟。

我还尝试了:-->OnSaveInstanceTate.clear()中提到的一些解决方案--但这不起作用。你可以在这里找到邮局

共有1个答案

韩照
2023-03-14

这就是当你将大量数据放入Android的Bundle时的典型错误。

我建议你做对了。大数据必须持久化到磁盘(数据库或文件),您只需将这些数据的引用传递到其他地方来使用它。

在这里,您可能会发现30KB是很小的,但是Bundle的大小限制的实际配置可能会因不同的设备/供应商配置而有所不同。

Bundle的本意是只保存简单和小的数据,不要过度滥用它。

 类似资料:
  • 例外 片段点击:- 在活动中, 详细活动清单, 图像加载使用毕加索, 模型类 从活动到片段的数据流, 我尝试过的解决方案 注意:-应用程序崩溃只在NOUGAT 最后,我实现了修复 将targetSdkVersion从25更改为23 更改后,我的应用程序在牛轧糖也不会崩溃。 我所要知道的就是这个合适的解决方案,或者有什么变通办法。 请引导到正确的方式。 提前谢谢。 碎片 选项卡布局 列表视图

  • 我有fragmens的viewpager,在这么多卷轴应用程序崩溃后,说翻边,甚至他们是没有捆绑交换 在监视的时候,我发现下面的钥匙造成了碰撞 这些都是有缺陷的,我没有分配任何捆绑我如何可以解决这个问题。

  • 我尝试了太多的选项/博客/脚本来安装GooglePlay for Emulator(通过Android Studio运行),但都没有成功。我看到了很多不同的错误 失败[安装失败\u更新不兼容] 评论-为什么在Emulator上安装GooglePlay如此困难,有人能提供与Marshmallow/Noughat一起使用的步骤或GAPP吗。或者为什么谷歌不提供标准步骤来为模拟器安装GApps! 以下是

  • 这在我的所有设备上都很好用,但: 我只在安装了Android牛轧糖的设备上收到了大量关于Crashlytics的问题: 致命异常:Android.app.RemoteServiceException:从包My.package发布了错误通知:无法展开以下内容的RemoteViews:StatusBarNotification(PKG=My.package User=UserHandle{0}ID=-

  • 我的应用程序在之前的Android版本上运行完美,在实际设备上从4.0测试到6.0.1。工作室仿真牛轧糖7.0和7.1没问题。然而,当我让我的朋友在他运行7.0的设备上测试APK时,这在几秒钟内就发生了: 崩溃通知 我没有访问该设备的权限(他住得很远),并且我无法在网上找到该特定错误的任何相关信息。原因可能是什么?