Android - TransactionTooLargeException: data parcel size bytes

Android - TransactionTooLargeException: data parcel size bytes

Při vývoji aplikací v Android studiu se můžeme setkat s chybou java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size bytes.

Problém vzniká kvůli přetečení maximální velikosti Bundle - Binder transaction, která přesáhne 1MB.

Celá chyba

D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: cz.up4.polymorph_crud, PID: 20172
    java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 928068 bytes
        at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3950)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
     Caused by: android.os.TransactionTooLargeException: data parcel size 928068 bytes
        at android.os.BinderProxy.transactNative(Native Method)
        at android.os.BinderProxy.transact(Binder.java:764)
        at android.app.IActivityManager$Stub$Proxy.activityStopped(IActivityManager.java:4623)
        at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3934)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

 

Řešení

Já se podělím o poněkud primitivní řešení tohoto problému - rozdhodl jsem se jen pro promazávání ARG_RESPONSE v Bundle poté co ji načtu do proměnné a dále s ní nepotřebuji pracovat:

bundle.putString(ARG_RESPONSE, "");

A celý probém se tím vyřešil :-)

 

Takže to pak vypadá třeba takto:

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getArguments();
responseData = bundle.getString(ARG_RESPONSE);

// reset to fix error:
// TransactionTooLargeException: data parcel size 928124 bytes
bundle.putString(ARG_RESPONSE, "");
}

 

 

Komentáře

Vaše reakce na Android - TransactionTooLargeException: data parcel size bytes

Související obsah

android

java

android-studio

Reference

Podívejte se na naše reference

Prohlédnout

Aplikace

Podívejte se na naše aplikace

Prohlédnout

Co umíme?

Podívejte se co umíme

Prohlédnout

Co umíme?

Vytváříme sofistikované aplikace pro náročné

Od webových aplikací přes android až po převodové můstky či složité informační systémy.

Podívejte se k nám

Máte ještě čas? Podívejte se na další rubriky

Tento web používá soubory cookie. Dalším procházením tohoto webu vyjadřujete souhlas s jejich používáním.. Více informací zde.