安卓热门框架——还在把几百行代码全塞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 到底好在哪里?
- 屏幕旋转不丢数据
—— ViewModel 自动保留。 - Activity 变得清爽
—— 只负责显示和接收点击,不写业务逻辑。 - 自动感知生命周期
—— LiveData 只在 Activity 处于活跃状态时更新 UI,避免崩溃。 - 易于测试
—— 你可以单独测试 ViewModel,不需要运行手机。 - 为团队合作打下基础
—— 这是大厂安卓项目的主流架构。
五、进阶提示
-
把 LiveData换成StateFlow(配合 Kotlin 协程,更现代) -
加入 网络请求(Retrofit)和 数据库(Room) -
使用 Repository 模式统一管理数据来源
六、写在最后
这篇文章的代码你完全可以跟着敲一遍大一就能理解架构设计,已经超过 70% 的同级同学了。
如果你觉得这篇文章有用,欢迎 点赞 / 在看 / 转发。下一篇我们聊聊:“用 Retrofit + MVVM 写一个天气查询 App”,敬请期待!
夜雨聆风