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

时间:2017-04-12 08:23:31

标签: android crash rx-java kotlin parcel

我正在使用Kotlin / rxJava中的应用程序,我一直在努力解决错误。

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

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

当我使用API​​为23或更低的手机时,错误不会发生,但是24和25我得到错误,应用程序在我退出应用程序后“崩溃”。对于我作为开发人员以及当然对用户而言,它变得非常烦人。

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

我还可以提一下,当我将一个人从我的应用程序添加到手机联系人列表时,所有信息都会被发送,我可以添加该人。

有没有人知道为什么这么开心?如果有必要,请随时向我询问更多细节,我现在已经有这个错误了一段时间,这非常令人烦恼。

整个错误:

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) 

1 个答案:

答案 0 :(得分:0)

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