【问题标题】:Android The best practice to pass big object between activities?Android 在活动之间传递大对象的最佳实践?
【发布时间】:2019-11-20 12:23:15
【问题描述】:

我想在两个活动之间传递一个大对象(Parcelable),最好的做法是什么?由于 Parcelable 的限制,我无法使用 Intent:

android.os.TransactionTooLargeException: data parcel size 1002388 bytes

那么,最好的做法是什么?

【问题讨论】:

  • 没有两个活动。有一个活动和两个片段。或者,让对象小心由两个活动都使用的某种单例存储库管理。
  • 我同意@CommonsWare,处理这个问题的最佳方法可能是将数据分解成小片段。
  • 您可以使用ViewModel 从 UI 组件中分离数据。

标签: android android-intent kotlin sharedpreferences parcelable


【解决方案1】:

最佳实践是不要通过活动或片段事务传递整个对象。将文件保存到 DB 或任何本地文件夹并将对象的链接传递给 Acitvity/Fragment 的更好方法(从 DB 或 URI 到文件的 ID)。

val intent = Intent(this, MainActivity::class.java)
intent.putExtra(EXTRA_KEY_FILE_ID, fileId)
startActivity(intent)

【讨论】:

  • 尽管这个答案有效,但它依赖于很多东西。它仅在已经存在任何形式的持久性(文件、数据库等)并且对象可以被唯一识别时才有效
猜你喜欢
  • 2023-03-30
  • 1970-01-01
  • 2021-11-30
  • 2014-12-08
  • 1970-01-01
  • 2016-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多