You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中Activity间传递MediaFileModel的最优方式及性能对比

Activity间传递MediaFileModel对象的最优方案及三种方式对比

你的MediaFileModel已经通过@Parcelize实现了Parcelable,这就是Android场景下Activity间传递该对象的最优方案,下面详细对比Parcelable、单例存储、JSON三种方式的性能差异和内存泄漏风险:

性能差异

  • Parcelable:Android官方推荐的跨组件序列化方案,基于内存直接读写数据,序列化/反序列化效率最高,没有额外的字符串转换开销,对于自定义数据类的传递是性能最优的选择。
  • JSON序列化:需要将对象转换为字符串(比如Gson、Moshi等库),再在目标Activity中解析回对象,中间涉及字符串的编解码操作,性能远低于Parcelable,数据量越大,耗时差距越明显。
  • 单例存储:不存在序列化/反序列化的开销,读取速度最快,但这种方式的核心问题不在性能,而在内存管理和数据一致性上。

内存泄漏风险

  • Parcelable:几乎无内存泄漏风险。通过Intent传递时,数据会由系统负责传递和回收,传递完成后原对象的引用不会被意外持有,符合组件生命周期的管理逻辑。
  • JSON序列化:内存泄漏风险极低。本质是传递字符串,和Parcelable一样,传递完成后不会残留无用的对象引用,不会影响GC回收。
  • 单例存储:内存泄漏风险最高。单例的生命周期与应用进程绑定,若将MediaFileModel存入单例,即使目标Activity已销毁,单例仍会持有对象引用,导致对象无法被GC回收;此外,多个组件共用单例时还可能出现数据覆盖、状态不一致的问题,增加维护成本。

补充说明

如果需要传递的是MediaFileModel的列表,直接使用Intent.putParcelableArrayListExtra()即可,同样高效且安全。只有在极端场景(比如超大量数据传递)下,才需要考虑ViewModel结合SavedStateHandle等替代方案,但对于单张或少量相册照片的传递,Parcelable完全足够。

内容的提问来源于stack exchange,提问作者DucK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 08:46:12