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

Android开发:Activity间传输用户名且传输后不持久化的方案选型

最佳方案选择:从Login Activity安全传输用户名到UserProfile Activity

应该选择方案2:使用共享ViewModel临时存储数据,在UserProfileActivity中访问,以下是各方案的详细分析:

  • 方案1(Intent + Bundle):Intent携带的Bundle数据会被系统序列化后存入Binder缓冲区,若系统需要回收内存,还可能将这些数据写入磁盘(比如配置变更场景),存在意外持久化的风险。同时,目标Activity获取数据后,原Intent中的数据仍可能留在内存中,无法满足“传输后不在内存中持久化”的要求。

  • 方案2(共享ViewModel):通过共享ViewModel(比如基于Activity级别的ViewModelProvider,或Navigation组件的共享ViewModel机制),Login Activity将用户名存入ViewModel,UserProfile Activity直接读取使用,之后可主动清空ViewModel内的用户名数据。ViewModel的生命周期与关联组件绑定,Login Activity销毁后,ViewModel会在合适时机被系统回收,数据既不会写入磁盘持久化,也能在使用后及时清理内存残留,完全符合需求。

  • 方案3(自定义Parcelable通过Intent传递):本质和方案1没有区别,只是序列化方式换成了Parcelable,依然存在数据被系统写入磁盘、内存残留的问题,还额外增加了代码复杂度,完全没必要。

  • 方案4(SharedPreferences):这是持久化存储方案,数据会被写入设备本地的XML文件,完全违反“不能持久化”的要求,而且敏感的用户名数据存入SharedPreferences还存在泄露风险,绝对不可取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 01:50:56