Dagger注入的单例在系统触发进程死亡时恢复默认值是否正常?
结论:这是正常行为,并非Dagger注入实现错误
原因分析
Dagger提供的单例是进程内单例——它的实例唯一性仅在同一个应用进程的生命周期内有效。当你通过Android Studio终止应用进程后,系统会回收该进程占用的所有内存,包括Dagger创建的单例实例。
当你把应用切回前台时,系统会重新启动应用进程,Dagger会重新初始化所有依赖,包括你的单例对象,此时单例自然会恢复为默认值。
补充说明
如果需要让单例中的数据在进程重启后依然保留,不能仅依赖内存中的单例,需要配合持久化方案,比如:
- 使用
SharedPreferences存储简单键值对 - 用Room数据库存储结构化数据
- 其他本地/远程持久化方式
内容的提问来源于stack exchange,提问作者Gil Ong
相关产品推荐
相关产品推荐

