Activity通过setArguments传递到Fragment的Bundle数据是传引用还是传值?

在Android开发中,我们通过Intent/Bundle在组件之间(Activity/Services/ContentProvider/BroadcastReceivers)传递数据,由于组件之间通信方式是 IPC,因此只能通过数据流(byte[])的方式传递Bundle,所以目标组件所获取的数据是一个新对象,组件间传递的Bundle数据是传值。

那么,Activity通过setArguments传递到Fragment的Bundle数据是传引用还是传值?
答案是:
(1)绝大多数的情况下是传引用
由于Activity向Fragment发送参数并不是IPC过程,所以传递的Bundle数据是传引用,
Fragment从Bundle中获取到的对象与Activity所发送的对象就是同一对象。
(2)特殊情况下是传值
当内存不足等特殊情况下,Fragment在被销毁时将会以数据流(byte[])的方式保存Bundle,以便在Fragment重新恢复时重新创建Bundle,这种情况下,Activity向Fragment发送参数是传值。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容