android - java.lang.RuntimeException: android.os.TransactionTooLargeException: 在片段之间导航时数据包大小 558780 字节
问题描述
我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:android.app.ActivityThread$StopInfo.run(ActivityThread.java:4156) 处的数据包大小 558780 字节。 os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main (ActivityThread.java:6682) 在 java.lang.reflect.Method。在 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(Native Method) 在 android.os.BinderProxy.transact(Binder.java:628) 在 android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:4149 ) 在 android.app.ActivityThread$StopInfo。在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Handler.handleCallback(Handler.java:751) 在 android.os.Looper.loop(Looper.java) 运行(ActivityThread.java:4148) :154) 在 android.app.ActivityThread.main(ActivityThread.java:6682) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java :1520) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)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(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 在 com. android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)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(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 在 com. android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)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(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 在 com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1410)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(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 在 com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1410)95) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6682) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android .internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)95) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6682) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android .internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 调用(本机方法)在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 调用(本机方法)
我们可以使用桥接器或任何第三方工具来解决问题吗?如何解决这个问题?
解决方案
您必须Bundle
像这样传递一个长字符串,并且您必须清除Bundle
接收数据的位置。你可以使用任何认为好的方式。
1.方法:
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.方法
@Override
protected void onSaveInstanceState(Bundle oldInstanceState)
{
super.onSaveInstanceState(oldInstanceState);
oldInstanceState.clear();
}
它会帮助你。
推荐阅读
- django - 使用 where 子句在 Django 上进行内部连接?
- json - Eclipse Ditto - 创建 MQTT 连接 - 因无效 json 400 响应而失败
- c# - 为什么 Resharper 告诉我可能存在 NullReferenceException?
- c - 如何实现分页,并在知道虚拟地址的情况下找到物理内存地址
- powershell - Powershell - 导出证书信息
- c# - 由于对象的当前状态(System.Text.Json),操作无效
- sql - 如何确保在雪花中使用 mode() 的查询的确定性结果
- mysql - MySQL:如何执行包括计算总和的多表查询?
- swift - 如何从文本中提取href并让它可点击到网站?
- python - CMake:custom_target 参数转发到特定命令