android - TransactionTooLargeException when starting new Activity -
android - TransactionTooLargeException when starting new Activity -
i thought intent's limit in size 1mb, reported on docs. anyway, lost 1 day chasing terrible transactiontoolargeexception
:
e/javabinder(368): !!! failed binder transaction !!! exception when starting activity android/com.android.internal.app.chooseractivity android.os.transactiontoolargeexception @ android.os.binderproxy.transact(native method) @ android.app.applicationthreadproxy.schedulelaunchactivity(applicationthreadnative.java:705) @ com.android.server.am.activitystack.realstartactivitylocked(activitystack.java:690) @ com.android.server.am.activitystack.startspecificactivitylocked(activitystack.java:799) @ com.android.server.am.activitystack.resumetopactivitylocked(activitystack.java:1743) @ com.android.server.am.activitystack.resumetopactivitylocked(activitystack.java:1381) @ com.android.server.am.activitystack.completepauselocked(activitystack.java:1129) @ com.android.server.am.activitystack.activitypaused(activitystack.java:1027) @ com.android.server.am.activitymanagerservice.activitypaused(activitymanagerservice.java:4288) @ android.app.activitymanagernative.ontransact(activitymanagernative.java:381) @ com.android.server.am.activitymanagerservice.ontransact(activitymanagerservice.java:1611) @ android.os.binder.exectransact(binder.java:367) @ dalvik.system.nativestart.run(native method)
the bad thing startactivity fails, activitymanager keeps restarting on , over, spawning infinite processes. seems confirmed on this blog post, author indicates 'limit' of 86389 characters. relevant piece of code quite simple:
intent myintent = new intent(activity, vacancyswipeactivity.class); //myintent.addflags(intent.flag_activity_clear_top); bundle ex = new bundle(); ex.putserializable(constants.extra.vacancy, vacancies); ex.putstring("token", token); ex.putstring("cosa", cosa.gettext().tostring()); ex.putint("dist", searchdistance.getprogress()); ex.putstring("dove", dove.gettext().tostring()); if (ret.getsearchlocation() != null) { ex.putparcelable("userloc", ret.getsearchlocation()); } ex.putint("totrows", ret.gettotfound()); myintent.putextras(ex); activity.startactivity(myintent);
the arraylist vacancies small, 8 pojo , gets loaded in thread , passed new activity via intent's extra. if increment 90k, app loops indefinitely requiring reboot, real annoyance. anyone else experienced this?
i had same problem , solved making singelton hashtable save "long" string , , give key in intent.
android android-intent binding
Comments
Post a Comment