安卓为什么E/JavaBinder:绑定器事务失败?

安卓为什么E/JavaBinder:绑定器事务失败?,java,android,performance,Java,Android,Performance,我读过很多关于这个错误的帖子,大多数都是关于管理图像的 但是当我停止应用程序(放在后台)时,我遇到了这个错误,所以应该是关于内存中的数据 我在片段和活动的onStop()中没有做任何事情 我已经检查了onSaveInstanceState(最后一个Bundle outState),该Bundle是空的。。。嗯 我有5个ArrayList对象,在进行测试时,我意识到如果没有最大的一个,就不会抛出错误 我的应用程序将拥有比现在更多的数据,因此这是一个问题 有人能解释一下我为什么会得到这个,以及我必须

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

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

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


我已经检查了onSaveInstanceState(最后一个Bundle outState),该Bundle是空的。。。嗯

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

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

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

错误:

01-25 13:51:09.272 4940-4940/com.cathedralsw.school教师 E/JavaBinder:!!!活页夹事务失败!!!(包裹大小)= (539984)

例外情况:主要 进程:com.cathedralsw.school教师,PID:4940 java.lang.RuntimeException: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) 位于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) 原因:android.os.TransactionTooLargeException:数据包大小 539984字节 位于android.os.BinderProxy.transactinative(本机方法) 在android.os.BinderProxy.transact(Binder.java:617) 在 ActivityManagerProxy.activityStopped(ActivityManagerNative.java:3632) 在android.app.ActivityThread$StopInfo.run(ActivityThread.java:4031) 位于android.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 1795-5775/? E/ReportTools:这不是测试版用户构建


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


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

在我的例子中,问题是方法(递归)的无限循环使堆栈饱和

你说的“停止应用程序”到底是什么意思?“有人能解释一下我为什么会得到这个结果吗”--通常,这是因为在已保存的实例状态
包中放入了太多的数据,或者在
意图上传递了太多的额外数据(例如,对于
startActivity()
)。很抱歉,我会更好地解释它。我已经检查了SaveInstanceState(最后一个Bundle超出状态)并且Bundle是空的。android是如何管理它的?谢谢你的回答
                                                                     --------- beginning of crash 01-25 13:51:09.281 4940-4940/com.cathedralsw.schoolteacher E/AndroidRuntime: FATAL