Android 在活动之间传递大对象的最佳实践?
Posted
技术标签:
【中文标题】Android 在活动之间传递大对象的最佳实践?【英文标题】:Android The best practice to pass big object between activities? 【发布时间】:2019-11-20 12:23:15 【问题描述】:我想在两个活动之间传递一个大对象(Parcelable),最好的做法是什么?由于 Parcelable 的限制,我无法使用 Intent:
android.os.TransactionTooLargeException: data parcel size 1002388 bytes
那么,最好的做法是什么?
【问题讨论】:
没有两个活动。有一个活动和两个片段。或者,让对象小心由两个活动都使用的某种单例存储库管理。 我同意@CommonsWare,处理这个问题的最佳方法可能是将数据分解成小片段。 您可以使用ViewModel
从 UI 组件中分离数据。
【参考方案1】:
最佳实践是不要通过活动或片段事务传递整个对象。将文件保存到 DB 或任何本地文件夹并将对象的链接传递给 Acitvity/Fragment 的更好方法(从 DB 或 URI 到文件的 ID)。
val intent = Intent(this, MainActivity::class.java)
intent.putExtra(EXTRA_KEY_FILE_ID, fileId)
startActivity(intent)
【讨论】:
尽管这个答案有效,但它依赖于很多东西。它仅在已经存在任何形式的持久性(文件、数据库等)并且对象可以被唯一识别时才有效以上是关于Android 在活动之间传递大对象的最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章