当我退出应用程序时,为什么在Android应用程序中使用Kotlin / rxJava编写android.os.TransactionTooLargeException? (的OnExit /的onPause)?

我正在Kotlin / rxJava上开发一个应用程序,现在我一直在为一个错误而苦苦挣扎。

每次我退出应用程序时,都会弹出一个窗口,提示:“不幸的是,AppName已经停止。”

我在控制台中得到这个错误: java.lang.RuntimeException:android.os.TransactionTooLargeException:数据包大小896824字节 **enter code here**

当我使用API​​ 23或更低的电话错误不会发生,但与24和25我得到错误和应用程序“崩溃”后,我退出了该应用程序。 而且,对于我作为开发者,当然对于用户来说,这也变得非常烦人。

每当我尝试以任何方式退出应用程序时都会发生错误。 如果我点击一个链接,把我带到浏览器,从我的应用程序添加/发送联系人到手机上的联系人列表或通过Gmail,Google +,蓝牙等共享错误发生。 所以会发生的是,在所有这些问题上,我必须退出应用程序(按住home按钮)或从应用程序(联系人,Gmail等)和应用程序崩溃打开另一个应用程序。

我还可以提到,当我从我的应用程序添加一个人到电话联系人列表中的所有信息被发送,我可以添加此人。

有没有人有任何线索,为什么这个快乐? 如果这是必要的,请随时问我更多的细节,我已经有一段时间了这个bug,这是非常恼人的。

整个错误:

 04-12 08:46:18.128 23287-23287/com.****.***** E/AndroidRuntime: FATAL EXCEPTION: main Process: com.******.*******, PID: 23287 java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 896824 bytes at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3781) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) Caused by: android.os.TransactionTooLargeException: data parcel size 896824 bytes at android.os.BinderProxy.transactNative(Native Method) at android.os.BinderProxy.transact(Binder.java:615) at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:3636) at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3773) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

这是在Activity的savedInstanceState包太大时引起的。 您需要检查在调用onPause时保留了哪些对象。 当我处理位图时,我也遇到了同样的问题。 我相信这实际上只是Android的新版本的一个问题,因为它现在实际上抛出一个异常,而不是仅仅抑制它。