提问者:小点点

安卓系统。为什么E/JavaBinder:BINDER事务失败?


我读了很多关于这个错误的帖子,大多数都是关于管理图像的。

但当我停止应用程序(放在后台)时,我得到了这个错误,所以应该是关于内存中的数据...

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

我已经检查了onSaveInstanceState(final Bundle outState)并且该Bundle为空...“?

我有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.runtime异常:android.os.transactiontoolargeException:数据包大小539984字节在android.app.activitythread$stopinfo.run(activitythread.java:4039)在android.os.handler.handlecallback(handler.java:761)在android.os.handler.dispatchmessage(handler.java:98)在android.os.looper.loop(looper.java:156)在os.handler.handleCallback(handler.java:761) 在android.os.handler.dispatchmessage(handler.java:98) 在android.os.looper.loop(looper.java:156) 在android.app.activityThread.main(activityThread.java:6595) 在java.lang.Reflect.Method.Invoke(原生方法) 在com.android.internal.os.zygoteInit$methodandargscaller.run(zygoteInit.java:942) 在com.android.internal.os.zygoteinit.main(zygoteinit.java:832) 01-25 13:51:09 286 179 5-5775/?E/ReportTools:这不是测试版用户生成


共1个答案

匿名用户

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

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