Android中MVP的应用

概述
对于代码架构,适合的才是最好的,至于是选用MVC,还是MVP,还是MVVM
一方面根据自己的擅长和喜好来决定,再一方面就是根据代码业务逻辑来决定
如果代码中压根没有用到Model层,那引入MVP等框架,真的只会让代码结构更复杂,而体现不出框架的优势。
不要为了使用框架而使用框架。
MVP Contract
public interface MediaListContract {
/**
* Presenter 接口则定义了该界面(功能)中所有的用户操作事件
* presenter层实现了该接口,只关注业务层的逻辑相关
* UI的更新只需调用View的状态方法
*/
interface Presenter extends IPresenter {
void getMedias();
}
/**
* View接口定义了该界面(功能)中所有的UI状态情况
* view层(Activity或Fragment)实现了该接口,只关注UI相关的状态更新
* 所有事件操作都调用 presenter 来完成
*/
interface View extends IView {
void refreshList(List<MediaInfoBean> lstMedias);
void showError(String msg);
}
}
一般Activity
public class MediaViewActivity extends BaseActivity {
private ActivityMediaViewBinding mView;
private ArrayList<String> lstFilePaths;
private int currentIndex;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mView = ActivityMediaViewBinding.inflate(getLayoutInflater());
setContentView(mView.getRoot());
initView();
}
@SuppressLint("ClickableViewAccessibility")
private void initView() {
Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
//...
//点击播放和暂停
mView.videoShow.setOnClickListener(view -> {
if (mView.videoShow.isPlaying()) mView.videoShow.pause();
else mView.videoShow.start();
});
//设置循环播放
mView.videoShow.setOnPreparedListener(mediaPlayer -> {
//...
});
//设定控件的滑动事件
mView.videoShow.setOnTouchListener(new View.OnTouchListener() {
//...
});
mView.tvBg.setOnTouchListener(new View.OnTouchListener() {
//...
});
}
private void play() {
//使用videoview控件进行视频播放
mView.videoShow.setVideoPath(lstFilePaths.get(currentIndex));
mView.videoShow.start();
}
}
Android中MVP的应用的更多相关文章
- android中MVP模式(一) - 清风明月的专栏 - CSDN博客
presenter 主持人.主导器 ====== 1. 明确需求,界面如下:可存,可根据id读取数据. 包结构图 2. 建立bean public class UserBean { private S ...
- Android中MVP模式与MVC模式比較(含演示样例)
原文链接 http://sparkyuan.me/ 转载请注明出处 MVP 介绍 MVP模式(Model-View-Presenter)是MVC模式的一个衍生. 主要目的是为了解耦,使项目易于维护. ...
- android中MVP模式
http://blog.csdn.net/ysh06201418/article/details/46534799 Android App整体架构设计的思考 http://blog.csdn.ne ...
- MVP架构在xamarin android中的简单使用
好几个月没写文章了,使用xamarin android也快接近两年,还有一个月职业生涯就到两个年了,从刚出来啥也不会了,到现在回头看这个项目,真jb操蛋(真辛苦了实施的人了,无数次吐槽怎么这么丑),怪 ...
- [译]Google官方关于Android架构中MVP模式的示例
概述 该示例(TODO-MVP)是后续各种示例演变的基础,它主要演示了在不带架构性框架的情况下实现M-V-P模式.其采用手动依赖注入的方式来提供本地数据源和远程数据源仓库.异步任务通过回调处理. 注意 ...
- Android中MVC、MVP、MVVM具体解释
前言 今天有时间就刚好有想写关于这几个名词.对于我来说.事实上这么多名词.思想归根究竟就是要依据项目实际.人员配置来做合理优化,既不能纸上谈兵.又不能畏惧不前.那么合理分阶段架构和完好代码才是关键,本 ...
- android中MVC,MVP和MVVM三种模式详解析
我们都知道,Android本身就采用了MVC模式,model层数据源层我们就不说了,至于view层即通过xml来体现,而 controller层的角色一般是由activity来担当的.虽然我们项目用到 ...
- Android中的MVP架构初探
说来羞愧,MVP的架构模式已经在Android领域出现一两年了.可是到今天自己才開始Android领域中的MVP架构征程. 闲话不多说,開始吧. 一.架构演变概述 我记得我找第一份工作时,面试官问我& ...
- Android架构(一)MVP架构在Android中的实践
Android架构(一)MVP架构在Android中的实践 https://www.300168.com/yidong/show-2790.html 核心提示:为什么要重视程序的架构设计 对程序进 ...
- 【腾讯Bugly干货分享】一步一步实现Android的MVP框架
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5799d7844bef22a823b3ad44 内容大纲: Android 开发 ...
随机推荐
- Spring IOC源码解析
Spring 框架的启动过程是其核心机制之一,主要涉及 IoC 容器的初始化.Bean 的加载和生命周期管理. 以下是 Spring 启动过程的详细步骤 环境准备 项目结构: <?xml ver ...
- JVM 垃圾回收调优的主要目标是什么?
JVM 垃圾回收调优的主要目标 JVM 垃圾回收调优的目标是为了提升应用的性能,优化垃圾回收过程中的停顿时间和吞吐量.调优的核心目标通常包括以下几点: 1. 减少垃圾回收的停顿时间 停顿时间(Stop ...
- 2025dsfz集训Day6: 数论
DAY6: 数论 \[Designed\ By\ FrankWkd\ -\ Luogu@Lwj54joy,uid=845400 \] 特别感谢 此次课的主讲 - Kwling 快速幂 快速幂是针对快速 ...
- EFCore先DBFirst,再CodeFirst(针对老项目迁移)
参照文章: CodeFirst命令介绍:Scaffold-DbContext 命令使用 - 跟着阿笨一起玩.NET - 博客园 (cnblogs.com) 整体流程介绍:NetCore 中 EFcor ...
- Dify+DeepSeek实战教程!企业级 AI 文档库本地化部署,数据安全与智能检索我都要
上次折腾完 DeepSeek 的本地私有化部署后,心里就一直琢磨着:能不能给咱们 Rainbond 的用户再做点实用的东西?毕竟平时总收到反馈说文档查找不够方便,要是能有个 AI 文档助手该多好.正想 ...
- 参考案例之“对象调用方法时,如何在方法中使用对象,例如(root.display()的display方法中使用root)”
一.对象调用方法时,如何在方法中使用对象,例如(root.display()的display方法中使用root) 1.测试方法 @Test public void suanfa24() { TreeN ...
- vue3 基础-样式绑定语法
本篇讲 vue 通过数据去进行 dom 样式的绑定操作, 主要分为 字符串, 数组, 对象等方式, 这个非常好理解, 凭着我们朴素的情感就能一步领悟到位的, 就还是演示一段吧. 字符 & 数组 ...
- .net6.0及以上WPF中使用GDI+的demo
using System; using System.Drawing; using System.Runtime.InteropServices; using System.Windows; usin ...
- 7 指纹浏览器 User-Agent 指纹伪装教程
目的 navigator.userAgent 是浏览器中最常被网站读取的属性之一,用于识别浏览器内核.版本.操作系统信息,甚至设备类型.它是构成浏览器指纹的关键字段,广泛应用于用户识别.设备分类.风控 ...
- 我的Vue之旅(1)
2020-10-17 今天主要学习了Vue中以下几个指令的使用 v-bind v-if v-on v-for v-model 其中v-bind与v-model都是属于数据绑定,v-bind通常来说是绑 ...