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

卸载应用后仍存缓存?Android应用代码更新及ViewModel数据残留问题

问题解决方案

一、重新安装应用后代码修改未生效

  • 关闭Android Studio的「Apply Changes」功能:该功能的增量构建缓存可能导致代码更新不生效,直接用「Run」按钮重新部署,或者在Settings -> Build, Execution, Deployment -> Instant Run里关闭该功能。
  • 清理设备端应用缓存与数据:在三星F21 FE的设置中,进入「应用」找到你的应用,选择「存储」,点击「清理缓存」和「清理数据」后再重新安装。
  • 强制清理项目构建缓存:在Android Studio中执行 Build -> Clean Project,接着执行 Build -> Rebuild Project,确保构建产物完全更新。
  • 关闭自动备份功能:Android 12及以上默认开启应用数据自动备份,重新安装时会恢复旧数据。在AndroidManifest.xml的<application>标签中添加android:allowBackup="false",测试阶段建议关闭该功能。

二、ViewModel 残留旧数据(进程杀死后仍存在)

  • 检查Dagger 2注入的ViewModel作用域:绝对不能给ViewModel添加@Singleton注解,单例ViewModel会在整个应用进程生命周期内存在,不受Activity生命周期控制。
  • 改用ViewModelProvider获取实例:BaseActivity中不要直接通过Dagger注入ViewModel实例,应该通过ViewModelProvider结合自定义的ViewModelFactory来获取。示例代码:
    // 在BaseActivity中
    val viewModel: YourViewModel by viewModels {
        DaggerViewModelFactory.create(application)
    }
    
    其中ViewModelFactory通过Dagger注入所需依赖,而非直接注入ViewModel单例。
  • 手动清理ViewModel数据(可选):如果需要在Activity销毁时清理特定数据,可以在BaseActivity的onDestroy()中调用ViewModel的自定义清理方法,比如:
    override fun onDestroy() {
        super.onDestroy()
        viewModel.clearData()
    }
    
    注意:正常情况下,非单例ViewModel会在Activity销毁时被系统自动回收,若仍残留数据,大概率是作用域设置错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:15:57