one of our Android application is crashing sometimes with TransactionTooLargeException as we are putting an ArrayList of approx size 500 (Shallow Size of 85,000 / Retained size of 1,400,000). I understand that we need to use DataStore or Room DB instead of intent.putExtras(bundle)
. Any suggestion on which method is ideal for this type of scenario? and if you can point me to a good resource on how to implement it in SDK 33?
Transaction too large, intent: Intent { cmp=client.*****/.********* (has extras) }, extras size: 603940, icicle size: 0
14:19:54.677 E Second failure launching client.*****/.********, giving up
android.os.TransactionTooLargeException: data parcel size 606852 bytes
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(BinderProxy.java:653)
at android.app.IApplicationThread$Stub$Proxy.scheduleTransaction(IApplicationThread.java:2031)
at android.app.servertransaction.ClientTransaction.schedule(ClientTransaction.java:136)
at com.android.server.wm.ClientLifecycleManager.scheduleTransaction(ClientLifecycleManager.java:47)
at com.android.server.wm.ActivityTaskSupervisor.realStartActivityLocked(ActivityTaskSupervisor.java:1063)
at com.android.server.wm.RootWindowContainer$AttachApplicationHelper.test(RootWindowContainer.java:4219)
at com.android.server.wm.RootWindowContainer$AttachApplicationHelper.test(RootWindowContainer.java:4169)
at com.android.server.wm.ActivityRecord.forAllActivities(ActivityRecord.java:5362)
at com.android.server.wm.WindowContainer.forAllActivities(WindowContainer.java:1712)
at com.android.server.wm.WindowContainer.forAllActivities(WindowContainer.java:1706)
at com.android.server.wm.RootWindowContainer$AttachApplicationHelper.accept(RootWindowContainer.java:4207)
at com.android.server.wm.RootWindowContainer$AttachApplicationHelper.accept(RootWindowContainer.java:4169)
at com.android.server.wm.Task.forAllRootTasks(Task.java:4033)
at com.android.server.wm.WindowContainer.forAllRootTasks(WindowContainer.java:2088)
at com.android.server.wm.WindowContainer.forAllRootTasks(WindowContainer.java:2088)
at com.android.server.wm.WindowContainer.forAllRootTasks(WindowContainer.java:2088)
at com.android.server.wm.WindowContainer.forAllRootTasks(WindowContainer.java:2088)
at com.android.server.wm.WindowContainer.forAllRootTasks(WindowContainer.java:2088)
at com.android.server.wm.WindowContainer.forAllRootTasks(WindowContainer.java:2088)
at com.android.server.wm.WindowContainer.forAllRootTasks(WindowContainer.java:2081)
at com.android.server.wm.RootWindowContainer$AttachApplicationHelper.process(RootWindowContainer.java:4185)
at com.android.server.wm.RootWindowContainer.attachApplication(RootWindowContainer.java:2203)
at com.android.server.wm.ActivityTaskManagerService$LocalService.attachApplication(ActivityTaskManagerService.java:7573)
at com.android.server.am.ActivityManagerService.attachApplicationLocked(ActivityManagerService.java:5782)
at com.android.server.am.ActivityManagerService.attachApplication(ActivityManagerService.java:5890)
at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2764)
at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3077)
at android.os.Binder.execTransactInternal(Binder.java:1316)
at android.os.Binder.execTransact(Binder.java:1280)