繁体   English   中英

安卓。 为什么是 E/JavaBinder:BINDER 交易失败?

[英]Android. Why E/JavaBinder: FAILED BINDER TRANSACTION?

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

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

我没有在我的片段和活动的 onStop() 中做任何事情。

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

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

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

谁能解释一下我为什么会得到这个以及我必须如何处理这个问题?

错误:

01-25 13:51:09.272 4940-4940/com.cathedralsw.schoolteacher E/JavaBinder:!!! 失败的绑定交易!!! (包裹大小 = 539984)

 --------- beginning of crash 01-25 13:51:09.281 4940-4940/com.cathedralsw.schoolteacher E/AndroidRuntime: FATAL

例外:主进程:com.cathedralsw.schoolteacher,PID:4940 java.lang.RuntimeException:android.os.TransactionTooLargeException:android.app.ActivityThread$StopInfo.run(ActivityThread.java:4039) 处的数据包大小为 539984 字节.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) 引起:android.os.TransactionTooLargeException:android.os.BinderProxy.transactNative(Native Method) 处的数据包大小 539984 字节 android.os.BinderProxy.transact(Binder.java) :617) 在 android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:3632) 在 android.app.ActivityThread$StopInfo.run(ActivityThread.java:4031) 在 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:这不是 beta 用户版本

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

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

在我的情况下,问题是一个使堆栈饱和的方法(递归)的无限循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM