ViewPager2 上的 TransactionTooLargeException

2024-01-06

我看到了很多关于 ViewPager 的问题,但现在它已经上线了ViewPager2.

我得到了一个java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel与ViewPager2。我见过那个TooLargeTool https://github.com/guardian/toolargetool可以帮助确定这个 TooLargeException 可能来自哪里。我的捆绑包是bestof_date并且相当低(0.1KB),但是android:support:fragments只是不断增加

所有这些都来自使用 ViewPager + Recyclerview 标准实现FragmentStateAdapter因为我可以有 150 多个标签

2021-05-14 17:08:16.373 com.my.application D/TooLargeTool: MainActivity.onSaveInstanceState wrote: Bundle167873131 contains 10 keys and measures 43.7 KB when serialized as a Parcel
    * com.google.app_measurement.screen_service = 0.2 KB
    * KEY_COMPONENT_ACTIVITY_RANDOM_OBJECT = 0.2 KB
    * android:viewHierarchyState = 1.9 KB
    * KEY_COMPONENT_ACTIVITY_REGISTERED_KEYS = 9.8 KB
    * androidx.lifecycle.BundlableSavedStateRegistry.key = 30.3 KB
    * KEY_COMPONENT_ACTIVITY_REGISTERED_RCS = 0.6 KB
    * KEY_COMPONENT_ACTIVITY_PENDING_RESULT = 0.1 KB
    * KEY_COMPONENT_ACTIVITY_LAUNCHED_KEYS = 0.1 KB
    * android:lastAutofillId = 0.1 KB
    * android:fragments = 0.4 KB
2021-05-14 17:08:16.482 com.my.application D/TooLargeTool: BestofVideosFragment.onSaveInstanceState wrote: Bundle168360416 contains 3 keys and measures 1.2 KB when serialized as a Parcel
    * androidx.lifecycle.BundlableSavedStateRegistry.key = 0.1 KB
    * android:view_registry_state = 0.2 KB
    * android:view_state = 0.9 KB
    * fragment arguments = Bundle87348377 contains 1 keys and measures 0.1 KB when serialized as a Parcel
    * bestof_date = 0.1 KB
2021-05-14 17:08:17.003 com.my.application D/TooLargeTool: BestofFragment.onSaveInstanceState wrote: Bundle113147201 contains 4 keys and measures 24.0 KB when serialized as a Parcel
    * android:support:fragments = 22.5 KB
    * androidx.lifecycle.BundlableSavedStateRegistry.key = 0.1 KB
    * android:view_registry_state = 0.2 KB
    * android:view_state = 1.2 KB
    * fragment arguments = Bundle176902886 contains 0 keys and measures 0.0 KB when serialized as a Parcel
2021-05-14 17:08:17.075 com.my.application D/TooLargeTool: NavHostFragment.onSaveInstanceState wrote: Bundle75010087 contains 7 keys and measures 29.1 KB when serialized as a Parcel
    * android:support:fragments = 26.9 KB
    * androidx.lifecycle.BundlableSavedStateRegistry.key = 0.1 KB
    * android-support-nav:fragment:defaultHost = 0.1 KB
    * android:view_registry_state = 0.2 KB
    * android-support-nav:fragment:graphId = 0.1 KB
    * android-support-nav:fragment:navControllerState = 1.5 KB
    * android:view_state = 0.1 KB

更新1: 经过更多搜索后,我发现这是因为FragmentStateAdapter正在保存堆积的视图状态,直到达到最大容量并崩溃,有没有办法清除它?


事实证明,我强制 navController 保存用户访问的每个屏幕,因此创建了一个大的后台堆栈。

bottomNavigation?.setOnItemSelectedListener {
    navController.navigate(it.itemId)
    true
}

我使用这个片段是因为我在底部栏中的一个项目中有一个 BottomSheetDialog,当单击它时,导航会将我送回 startDestination。

我改为https://developer.android.com/reference/androidx/navigation/ui/NavigationUI#onnavdestinationselected https://developer.android.com/reference/androidx/navigation/ui/NavigationUI#onnavdestinationselected

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title="@string/title_home"
        android:id="@id/homeFragment"
        android:icon="@drawable/ic_home"/>

    <item android:title="@string/title_more"
        android:id="@id/plusFragment"
        android:icon="@drawable/ic_plus"              
        android:menuCategory="secondary" />
</menu>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ViewPager2 上的 TransactionTooLargeException 的相关文章

  • PhoneGap/Cordova 应用程序通知

    我是 PhoneGap Cordova 的新手 我希望向我的应用程序添加一些通知 推送通知 因此当应用程序上发布新文章时 它会提醒用户 本地通知 在设定的时间间隔 日期和时间 我可以提示用户我的应用程序上的最新文章 我进行了大量搜索 但找不
  • Android主线程的IO操作

    我的问题有两个 是否建议在 Android 的主线程上进行 IO 操作 或者它是否有可能导致我的应用程序崩溃 如果在主线程上执行 IO 操作不理想 我可以使用哪些其他框架 以便当我的应用程序加载时它可以执行一些基本的 IO 文件读取并将值存
  • 在 Android 上使用 AT 命令与调制解调器对话

    我试图与三星 Galaxy s2 plus 和华为 p1 xl u9200 调制解调器发送 AT 命令 但无法得到任何结果 我使用 adb shell 发送命令并使用 logcat 查看日志 在三星 当我执行 cat 时 proc tty
  • socket.io xhr 在连接缓慢时出现错误(3G 移动网络)

    当我在 3G 移动网络 互联网连接速度慢 上测试我的真实聊天应用程序时 Socket io反复断开然后重新连接 我已经记录了原因 它说 xhr post error 这提高了 transport error 然后断开连接 我可以知道什么意思
  • 带有 Android 支持库 v7 的 Maven Android 插件

    我使用 maven android plugin 构建我的 android 应用程序 它依赖于 android 支持库 v4 和 v7 由于我没有找到如何从developer android com下载整个sdk 因此我无法使用maven
  • 在 gradle 中,我应该排除分支下的所有依赖项还是只排除根就足够了?

    我已将以下自定义任务添加到我的build gradlefile 为了打印出依赖项的依赖项 This part is useful for finding conflict resolution s between dependencies
  • 当路径的点超出视野时,Android Canvas 不会绘制路径

    我在绘制路径时遇到了 Android Canvas 的一些问题 我的情况是 我有一个相对布局工作 如地图视图 不使用 google api 或类似的东西 我必须在该视图上绘制一条路径 canvas drawPath polyPath bor
  • 需要 Android webview window.open() 和 window.close() 的信息

    我正在开发一个安卓应用程序 这是我网站的 WebView 该网站包含一个弹出按钮 单击该按钮后 将打开一个新窗口并显示内容 该链接可以来自外部站点 然而 当我实现此操作时 新选项卡正在打开 之后它会弹出以打开浏览器 尽管在 Web 视图中打
  • ExpandableListview OnGroupClickListener 未触发

    我正在关注这个 以编程方式折叠 ExpandableListView 中的组 https stackoverflow com questions 4314777 programmatically collapse a group in ex
  • 透明 9patch 图像:显示出线条

    我得到了一个透明的 9 补丁图像 其中有 9 条补丁线显示槽 This is the output 显然我不希望水平线可见 这就是我创建 9patch 的方式 This is the final image that is used in
  • 将 java 中的 byte[] 转换为 C++ 中的 unsigned char* 的正确方法,反之亦然?

    我是 C 和 JNI 的新手 我尝试找到一种正确的方法 通过使用 JNI 将 java 中的 byte 转换为 C 中的 unsigned char 反之亦然 我正在安卓上工作 在谷歌和SO中寻找解决方案后 我还没有找到将java中的byt
  • 在android中,将相机预览流到视图上

    我想将 Android 相机的相机预览流式传输到视图上 目的是随后使用 onDraw 将各种内容添加到视图中 我不需要随时实际捕捉图像 它不必是最高质量或每秒最大数量的帧 有谁知道如何做到这一点 将其添加到您的 xml 中
  • Android 上的 MIDI:Java 和/或 AIR 库

    一段时间以来 我一直在考虑在 iPad 上 重新 构建一个应用程序 其中我将使用 Objective C 和DSMI http dsmi tobw net 将 MIDI 信号发送到主机 这还不错 我的意思是 除了实际编写应用程序之外 现在我
  • Android 中的库可以有自己的意图过滤器吗?

    我想开发一个可以包含在其他 Android 应用程序中的库来拦截某些类型的意图 是否可以 我创建了一个库和一个测试项目 两者都有自己的AndroidManifest xml文件 在库的清单中 我为操作 TEST 定义了一个意图过滤器 但是
  • 哪个视图最亮?

    在Android中 哪个是轻量级视图 例如 View Textview Edittext 等 在某些情况下 我们需要使用视图来填充区域而不向用户显示视图 同时屏幕加载速度应该很快 您可以使用空间 android widget Space S
  • 如何更改操作栏背景和文本颜色

    我正在使用本教程中的导航抽屉 http www androidhive info 2013 11 android sliding menu using navigation drawer http www androidhive info
  • 从文件路径显示图像视图?

    我需要仅使用文件名而不是资源 ID 来显示图像 ImageView imgView new ImageView this imgView setBackgroundResource R drawable img1 我在可绘制文件夹中有图像
  • LifeCycleAware Fragment 中的片段生命周期事件

    我有一个生命周期感知片段和一个LifecycleObserver class public class MyFragment extends Fragment Override public void onCreate Nullable B
  • 如何访问我的 Android 程序中的联系人

    我正在制作一个短信应用程序 并且想要访问我的 Android 应用程序中的联系人 我想访问联系人 就像他们在实际联系人列表中一样 选择后 我需要返回到我的活动 在其中我可以向该人发送短信 或者是否可以访问存储联系人的数据库 我的代码如下所示
  • Android GetPTLAFormat 上的 Phonegap 错误

    我们正在开发一个使用 jQuery 移动和电话间隙的应用程序 一切似乎都工作正常 但是当在连接的 Android 手机上运行应用程序时 我们在 Eclipse logcat 中看到大量类似这样的错误 0 GetPTLAFormat inva

随机推荐

  • 将 SKSpriteNode 添加到 SKEffectNode 时金属崩溃

    gt MTLDebugRenderCommandEncoder setScissorRect 2028 failed assertion rect x 0 rect width 1080 1080 must be lt 240 添加一个简单
  • 构建定义 null

    我使用这段代码来确定特定构建的构建定义详细信息 TfsTeamProjectCollection tpc TfsTeamProjectCollectionFactory GetTeamProjectCollection tfsUri IBu
  • 来自命令行的 PHPUnit - 显示的依赖文件列表。如何让它只显示测试脚本?

    我已经在 Windows 7 上安装了 PHPUnit 以及 PHP 和 Pear 我有一个基本的测试脚本 首先
  • 如何在此父方法中等待异步方法而不使用异步修饰符?

    我有一个想要等待的方法 但我不想引起多米诺骨牌效应 认为任何东西都可以调用这个调用方法并等待它 例如我有这样的方法 public bool Save string data int rowsAffected await UpdateData
  • 在 Visual Studio Code 中添加断点

    我一定是做了一些愚蠢的错误 因为我似乎无法在 Visual Studio Code 中添加断点 当我右键单击我的代码时 会弹出以下内容 在行号旁边左键单击也不起作用 我已阅读此处的文档https code visualstudio com
  • Android 屏幕方向,晃动手机导致应用程序崩溃

    我有搜索应用程序 它加载从网络服务检索的数据 创建应用程序时 它会显示进度对话框 一旦完成加载数据 它就会关闭进度对话框 问题是在加载时 如果我改变手机的方向 它工作正常 它会尝试再次加载活动 但如果我在加载数据时开始摇动手机 应用程序就会
  • 动画 UIStackView 排列子视图内容大小变化

    当其内在内容大小发生变化时 是否可以对排列的子视图进行动画处理 例如 假设我有一个已排列的子视图 其中包含固定到边缘的单个 UILabel 该标签有少量文字 新文本出现 比之前的文本大 标签的内在内容尺寸现在更大 我希望能够像这样制作动画
  • 位域的意外行为

    我编译了代码 include
  • 如何使用 Carrierwave 上传自定义 S3 元数据

    我想添加Content Disposition我使用 Carrierwave 上传的文件的标头 之后不能通过 URL 中的查询参数执行此操作 有什么我可以添加到的吗AttachmentUploader在上传文件之前 可以帮助我完成此任务的模
  • Android Studio:按钮始终出现在前面

    我有一个相对布局 我向其中添加视图 我向其中添加了一个按钮 该按钮始终显示在添加到其中的所有其他视图的前面 无论添加内容的顺序如何 怎么会 我纯粹使用 Java 编写代码 没有使用 XML 这是一个简单的示例 即使文本是最后添加的 按钮也会
  • Fabric crashlytics 新实施不起作用 |织物特性

    实施将apiSecret and apiKey in the fabric properties文件不再工作 织物属性文件 app fabric properties apiSecret xx68f6074dxxxxxc11dxxx97c1
  • Python 套接字在远程消耗所有数据之前关闭

    我正在编写一个 Python 模块 它通过 unix 套接字与 go 程序进行通信 客户端 python 模块 将数据写入套接字 服务器使用它们 Simplified version of the code used outputStrea
  • 如何将点击手势转换为 SwiftUI 地图视图中的坐标?

    我正在尝试添加一个MapAnnotation项目到我的Map 查看自MapKit 如果您在文本字段中手动添加坐标 则一切正常 但我找不到任何通过点击地图来添加坐标的方法 我在互联网上阅读了很多内容 但没有找到任何内容onTap 地图事件处理
  • 未定义错误:“current_user”未定义

    我有一个带有烧瓶的应用程序 以前可以使用 但现在我使用蓝图并尝试运行它 但出现错误 所以我想知道这就是 g user 不工作的蓝图问题 我该如何修复它 谢谢 应用程序 布局 init py from flask import Bluepri
  • Summernote div 更改时 Textarea 值发生变化

    我为 Summernote 设置了一个 div 来更改从数据库中提取的文本 div class form control div document ready function summernote summernote height 30
  • 如何在javascript中“重新启用”特殊字符序列?

    如果我有一个定义的字符串变量 例如 var testString not n new line 它的价值当然是not n new line 但如果直接使用 not n new line 测试字符串将包含新行 那么最简单的方法是什么测试字符串
  • 为什么我一定要揭开脆弱的自己?

    我创建了一个名为VerifyObject 其中包含具有类似签名的函数 typealias handlerCodeID String gt Void class func checkPause withID String runOnPause
  • 为什么嵌套的describe()块看不到外部块中定义的变量?

    我在实际代码中遇到了这个问题 但我整理了一个简单的例子来证明这一点 下面的代码工作正常 我在我的根目录中设置了一个变量describe 在我的子系统中可以访问的块describe s it blocks describe simple ob
  • Fortran SAVE 语句

    我读过有关save 英特尔 语言参考文档中的声明 但我不太明白它的作用 有人可以用简单的语言向我解释一下当save语句包含在模块中 原则上 当模块超出范围时 该模块的变量将变为未定义 除非使用 SAVE 属性声明它们 或者使用 SAVE 语
  • ViewPager2 上的 TransactionTooLargeException

    我看到了很多关于 ViewPager 的问题 但现在它已经上线了ViewPager2 我得到了一个java lang RuntimeException android os TransactionTooLargeException data