kotlin 在Activity和Activity之间传递列表对象

vyswwuz2  于 2023-10-23  发布在  Kotlin
关注(0)|答案(1)|浏览(183)

我有一个列表对象,它包含有关1相册中的1张照片的信息。

@Parcelize
data class MediaFileModel(
    var uri: Uri,
    var name: String,
    var bucketId: Long = 0,
    var bucketName: String = "",
    var duration: String = "",
    var length: Double = 0.0,
    var albumId: Long = 0,
    var songAlbum: String = "",
    var pathFile: String = "",
    var id: Long = 0
) : Parcelable

如何尽可能优化地将其从一个活动转移到另一个活动?通过Parcelable传递或创建一个Singleton类来存储它,或者有更好的方法吗?谢谢
在咨询ChatGPT的更多内容时,我看到也可以使用JSON来传输数据,但这3种方式之间的性能如何以及内存泄漏的可能性?

ecfdbz9o

ecfdbz9o1#

Parcelable应该是高效传递少量数据的最佳实践。原因如下:

  • Parcelable是一个接口,允许您序列化和重新序列化对象,以便在组件(如活动、服务和片段)之间高效、高性能地传递数据。
  • 在Kotlin中,有@Parcelize注解可以轻松实现Parcelable。
  • 在API level 33中,Google在Intent中添加了新方法getParcelableArrayListExtra,以使用Parcelable而无需强制转换类类型。是的,我们知道他们反对这么多的类和方法,如果需要的话,但不是这一个,对吗?

IntentCompat类中也有androidx对Parcelable的支持。

IntentCompat.getParcelableArrayListExtra(intent, name, class)
IntentCompat.getParcelableExtra(intent, name, class)
  • Parcelable比Serializable等替代方案更快,因为它使用了较低级别的方法,并且针对Android的IPC(进程间通信)系统进行了设计和优化。

相关问题