java.lang.RuntimeException:android.os.TransactionTooLargeException:在片段之间导航时,数据包大小为558780字节

时间:2018-10-09 08:00:56

标签: android android-fragments android-activity android-bundle

我正在使用Bundle在活动和片段之间传输数据。当我从一个片段导航到新片段时,在不传输数据或不使用Bundle来获取数据的情况下,应用程序崩溃并出现以下错误。

> > 10-09 11:36:09.100 467-467/? E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!  (parcel size = 558780) 10-09 11:36:09.101 467-467/?
> D/AndroidRuntime: Shutting down VM 10-09 11:36:09.101 467-467/?
> E/AndroidRuntime: FATAL EXCEPTION: main
  

进程:com.xxxx.xxxxmobileapp.debug,PID:467                                                  java.lang.RuntimeException:android.os.TransactionTooLargeException:   数据包裹大小558780字节                                                      在android.app.ActivityThread $ StopInfo.run(ActivityThread.java:4156)                                                      在android.os.Handler.handleCallback(Handler.java:751)                                                      在android.os.Handler.dispatchMessage(Handler.java:95)                                                      在android.os.Looper.loop(Looper.java:154)                                                      在android.app.ActivityThread.main(ActivityThread.java:6682)                                                      在java.lang.reflect.Method.invoke(本机方法)                                                      在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1520)                                                      在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)                                                   造成原因:android.os.TransactionTooLargeException:数据包大小558780字节                                                      在android.os.BinderProxy.transactNative(本地方法)                                                      在android.os.BinderProxy.transact(Binder.java:628)                                                      在android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:4149)                                                      在android.app.ActivityThread $ StopInfo.run(ActivityThread.java:4148)                                                      在android.os.Handler.handleCallback(Handler.java:751)                                                      在android.os.Handler.dispatchMessage(Handler.java:95)                                                      在android.os.Looper.loop(Looper.java:154)                                                      在android.app.ActivityThread.main(ActivityThread.java:6682)                                                      在java.lang.reflect.Method.invoke(本机方法)                                                      在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1520)                                                      在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

我们可以使用网桥或任何第三方工具来解决此问题吗?如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

您必须像这样传递带有Bundle的长字符串,并且必须清除Bundle接收数据的位置。您可以使用任何认为好的方法。

1.Method:

Bundle bundle = new Bundle();
bundle.putString("This is just for testing purpose", "Developer program");

要清除Fragment上的捆绑对象

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) 
{
    String recStr= bundle.get("This is just for testing purpose");       
    bundle.clear();   
}

2.Method

@Override
protected void onSaveInstanceState(Bundle oldInstanceState) 
{
    super.onSaveInstanceState(oldInstanceState);
    oldInstanceState.clear();
}

它将为您提供帮助。