行业资讯
📅 2026/7/8 8:39:01
Android MVP Architecture:把 MVP 模式讲明白的最小样本
文章目录Android MVP Architecture把 MVP 模式讲明白的最小样本1、 它解决什么问题2、 包结构怎么分3、 关键实现细节4、 用到的库5、 这仓库适合谁看Android MVP Architecture把 MVP 模式讲明白的最小样本这个项目在 GitHub 上拿到 212 Star。并不算多。但 Android 里讲 MVP 的文章一搜一大把真正能让人 clone 下来跑通、看懂代码层怎么分层的反而少见。AliAsadi 这个仓库就是奔着「极简」去的没有冗余的业务逻辑整体代码量压在一个屏幕能装下的范围里。1、 它解决什么问题Android 工程最容易写成一坨 God Activity。所有逻辑塞进 Activity网络请求、数据库读写、UI 刷新、点击事件全挤一起几千行下来根本没法维护。MVP 想做的事是把 UI 和业务分离。View 只管显示和接收用户操作Presenter 处理业务逻辑并更新 ViewModel 负责数据。三层之间靠接口约束互相不直接持有。道理好懂但落到代码里到底怎么写新人第一次接触 MVP 多半会卡在BaseActivity 怎么抽、Presenter 的生命周期跟 Activity 怎么对齐、View 接口放哪、怎么避免内存泄漏。这个项目就是给这类疑问准备的参考实现。2、 包结构怎么分项目分三个顶层包data数据访问和处理的全部组件uiView 类和各自的 Presenterutils工具类包结构一眼就能看清楚边界。data 不依赖 uiui 通过 Presenter 调 datautils 谁都能用。这种切法把依赖方向固定下来新人接手时不用猜哪个类该放哪、谁能调谁。3、 关键实现细节项目里有个基类的设计值得看一下。Base 抽象类负责绑住 View 和 Presenter 的关系同时在 View 不再需要的时候把它释放掉。具体说就是 BasePresenter 在 onDestroy 时把 View 引用置空避免 Activity 销毁了 Presenter 还持有它的引用导致泄漏。这是 MVP 在 Android 上最常踩的坑之一。写不好基类内存泄漏就跟家常便饭一样。4、 用到的库依赖列表压得很克制没有堆一屏幕RoomDatabase本地数据库ButterKnifeView 注入Retrofit网络请求PowerPreference键值存储GsonJSON 解析Picasso图片加载Mockito单元测试桩件每个库都是各自场景的主流方案挑得不算花哨便于把注意力放在 MVP 结构本身。5、 这仓库适合谁看第一次写 Android MVP、想看一份能直接跑通的参考代码老项目要从 God Activity 重构成 MVP、想抄个包结构和基类骨架给团队新人讲 MVP 的、需要一份能 clone 下来当场演示的样本整体读一遍代码不到半小时结构清楚没有冗余作为学习材料比多数讲 MVP 的博客文章管用。场演示的样本整体读一遍代码不到半小时结构清楚没有冗余作为学习材料比多数讲 MVP 的博客文章管用。