乐于分享
好东西不私藏

安卓热门框架——还在把几百行代码全塞Activity?手把手教你MVVM框架!

安卓热门框架——还在把几百行代码全塞Activity?手把手教你MVVM框架!

大一的你,是不是还在 Activity 里写几百行业务逻辑?屏幕一旋转,数据就没了?今天带你认识安卓官方推荐的架构模式 —— MVVM,用最经典的 Java 语言,写一个永不丢数据的计数器。

一、先看看你现在的代码可能长什么样

很多同学刚开始学安卓,会这样写一个计数器:

public class MainActivity extends AppCompatActivity {    private int count = 0;    private TextView textView;    private Button button;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        textView = findViewById(R.id.textView);        button = findViewById(R.id.button);        textView.setText(String.valueOf(count));        button.setOnClickListener(v -> {            count++;            textView.setText(String.valueOf(count));        });    }}

看起来挺简单?但是你旋转一下屏幕试试——count 直接归零了!而且如果逻辑复杂(网络请求、数据库操作),Activity 会变成几千行的“上帝类”,维护起来想哭。

二、MVVM 是什么?

  • View(视图层)
    对应你的 Activity / Fragment,只做 UI 相关的事。
  • ViewModel(视图模型层)
    对应 ViewModel 类,存数据、处理业务逻辑。
  • Model(模型层)
    对应 Repository / 数据源。

关键点:View 和 Model 不直接对话,全部通过 ViewModel 中转。而且 ViewModel 能自动存活,屏幕旋转不丢数据。

三、手把手带你写一个 MVVM 计数器(Java版)

第 1 步:添加依赖

打开 app/build.gradle,在 dependencies 块中添加:

点击右上角 “Sync Now”。

第 2 步:创建 ViewModel 包

新建 MainViewModel.java

第 3 步:编写布局文件 activity_main.xml

第 4 步:在 Activity 中使用 ViewModel 和 LiveData

修改 MainActivity.java

第 5 步:运行效果

  • 每次点击按钮,数字 +1。
  • 旋转屏幕
    ,数字不会归零!因为 ViewModel 存活于配置变更。
  • 所有 UI 更新都由 LiveData 自动触发,你不需要手动 setText

四、MVVM 到底好在哪里?

  1. 屏幕旋转不丢数据
     —— ViewModel 自动保留。
  2. Activity 变得清爽
     —— 只负责显示和接收点击,不写业务逻辑。
  3. 自动感知生命周期
     —— LiveData 只在 Activity 处于活跃状态时更新 UI,避免崩溃。
  4. 易于测试
     —— 你可以单独测试 ViewModel,不需要运行手机。
  5. 为团队合作打下基础
     —— 这是大厂安卓项目的主流架构。

五、进阶提示

  • 把 LiveData 换成 StateFlow(配合 Kotlin 协程,更现代)
  • 加入 网络请求(Retrofit)和 数据库(Room)
  • 使用 Repository 模式统一管理数据来源

六、写在最后

这篇文章的代码你完全可以跟着敲一遍大一就能理解架构设计,已经超过 70% 的同级同学了。

如果你觉得这篇文章有用,欢迎 点赞 / 在看 / 转发下一篇我们聊聊:“用 Retrofit + MVVM 写一个天气查询 App”,敬请期待!