gpt4 book ai didi

java - 安卓。为什么 E/JavaBinder : FAILED BINDER TRANSACTION?

转载 作者:行者123 更新时间:2023-11-30 07:49:33 26 4
gpt4 key购买 nike

我已经阅读了很多关于这个错误的帖子,其中大部分是关于管理图像的。

但是当我停止应用程序(置于后台)时出现此错误,所以应该考虑内存中的数据......

我没有在 fragment 和 Activity 的 onStop() 中执行任何操作。

我检查了 onSaveInstanceState(final Bundle outState) 并且包是空的... ¿?

我有 5 个 ArrayList 对象并进行测试,我意识到如果我没有最大的对象,则不会引发错误。

我的应用程序将拥有比现在更多的数据,所以这是个问题。

任何人都可以向我解释为什么我会得到这个以及我必须如何处理这个吗?

错误:

01-25 13:51:09.272 4940-4940/com.cathedralsw.schoolteacher
E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 539984)

--------- beginning of crash
01-25 13:51:09.281 4940-4940/com.cathedralsw.schoolteacher E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.cathedralsw.schoolteacher, PID: 4940
java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 539984 bytes
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:4039)
at android.os.Handler.handleCallback(Handler.java:761)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6595)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)
Caused by: android.os.TransactionTooLargeException: data parcel size 539984 bytes
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:617)
at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:3632)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:4031)
at android.os.Handler.handleCallback(Handler.java:761)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6595)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)
01-25 13:51:09.286 1795-5775/? E/ReportTools: This is not beta user build

最佳答案

您通过 Binder 界面移动了太多数据。如果使用自定义 Binder 界面并传递大对象,或者如果您将额外内容附加到非常大(或很多对象,因此大小加起来)的 Intent ,可能会发生这种情况。发送 Intent 或接收结果时。 Binder 用于 Android 中的任何类型的跨进程通信,并且在同一应用程序中启动 Activity 时仍然使用。 Binder 内部有一个大小有限的缓冲区,所以大的事务可能会导致这样的失败。

与其将数据直接放入Intent,或将其直接传递给基于 Binder 的方法调用,不如传递某种引用,接收者可以使用该引用访问日期。例如,为存储在数据库或类似机制中的数据发送一个 id。

关于java - 安卓。为什么 E/JavaBinder : FAILED BINDER TRANSACTION?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48443286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com