Android.os.TransactionTooLargeException выбрано случайно

Я вижу довольно много отчетов об ошибках из одного из моих живых приложений, причиной которого является это исключение:

java.lang.RuntimeException: Adding window failed at android.view.ViewRootImpl.setView(ViewRootImpl.java:513) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:259) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2852) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2250) at android.app.ActivityThread.access$800(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5017) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(NativeStart.java) Caused by: android.os.TransactionTooLargeException at android.os.BinderProxy.transact(Binder.java) at android.view.IWindowSession$Stub$Proxy.addToDisplay(IWindowSession.java:683) at android.view.ViewRootImpl.setView(ViewRootImpl.java:502) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:259) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2852) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2250) at android.app.ActivityThread.access$800(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5017) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(NativeStart.java) 

Из того, что я прочитал здесь , я считаю, что причина может быть слишком большой. Я добавляю дополнительные дополнения. Я в настоящее время передаю объект из одного действия в другое, в этом методе объектов writeToParcel я writeToParcel строку JSON, которая имеет размер от 1000 до 1500 символов. Может ли это быть причиной?

Во время тестирования приложения я иногда замечаю, что пользовательский интерфейс отстает, как будто он мал по памяти, замерзает, а затем принудительно закрывает.

Было бы лучше передать объект из одного действия в другое с помощью статических переменных или это может быть вызвано чем-то другим?

благодаря

Solutions Collecting From Web of "Android.os.TransactionTooLargeException выбрано случайно"

Да, это очень хорошо может быть вызвано слишком большим Parcelable, слишком большим графом объектов, который будет отправлен как Parcelable, если быть точным. По моему опыту вам лучше использовать серию java, если вы переносите большой график, и это в значительной степени противоположно советам, которые вы получите в другом месте на SO и вообще. Чтобы быть справедливым, это лучше, чем использование Parcelable через Parceler lib, я никогда не использовал чистый Parcelable. Более подробную информацию см. В моем сообщении в блоге по этой теме.

Согласно Что делать в TransactionTooLargeException :

Это может произойти, когда вы передаете много данных с помощью дополнительных намерений

Если возможно, разделите большую операцию на небольшие куски, например, вместо вызова applyBatch () с 1000 операций, вызовите его по 100 каждый.

Не обменивайте огромные данные (> 1Mb) между сервисами и приложениями

1Mb Согласно http://developer.android.com/reference/android/os/TransactionTooLargeException.html

Вы переопределяете

 onSaveInstanceState() 

Если вы проверите то, что вы сохраняете, также может быть ошибка. Например, если вы

 outState.putParcelable("key", outState); //Error is passing the bundle