如何绕过将数据模型传递给片段参数以避免事务太大异常?

Posted

技术标签:

【中文标题】如何绕过将数据模型传递给片段参数以避免事务太大异常?【英文标题】:How to get around passing data models to fragment arguments to avoid Transaction Too Large Exception? 【发布时间】:2022-01-06 00:36:02 【问题描述】:

我正在尝试修复 TransactionTooLarge 异常。我在onSaveInstanceState 中找不到任何罪魁祸首。

但是,在将内容传递给意图和捆绑包时,我在片段上看到了很多以下类型的代码。

companion object 

    fun newInstance(item1: Item1, item2: Item2): MyFragment 
        val fragment = MyFragment()
        val args = Bundle()
        args.putParcelableArrayList(ITEM_1_KEY, item1)
        args.putInt(ITEM_2_KEY, item2)
        fragment.arguments = args
        return fragment
    

基本上到处都有一堆代码传递数据模型。

您如何绕过尝试将包中的较小对象传递给片段?

这些片段基本上只是拾取并使用它们。感觉很难避免通过这些。

【问题讨论】:

你读过Guide to app architecture吗?您应该从存储库层获取数据,而不是通过参数发送数据。 我已阅读架构指南。只是我正在处理的代码库没有很好的架构。本质上,大量数据是从起始屏幕从 API 获取的,然后传递给其他片段。它不会存储或缓存在任何地方。所以我一直在寻找更简单的方法来解决这个问题。 【参考方案1】:

尝试通过 viewModel 使用中间人作为 ViewModel,您可以在片段和活动之间附加相同的数据源,并能够顺利更新数据

【讨论】:

以上是关于如何绕过将数据模型传递给片段参数以避免事务太大异常?的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin - 如何将空值传递给片段 newInstance 方法?

如何将浮点矩阵作为 2D 纹理传递给片段着色器?

片段 getArguments() 空指针异常

如何以编程方式调用命令传递给它一个参数?

Python Mongoengine:如何绕过无法通过验证的文档以避免崩溃

如何将数据从片段传递到对话框片段