Android MVP模式 入门

  • View:对应于布局文件

  • Model:业务逻辑和实体模型

  • Controllor:对应于Activity

看起来的确像那么回事,但是细细的想想这个View对应于布局文件,其实能做的事情特别少,实际上关于该布局文件中的数据绑定的操作,事件处理的代码都在Activity中,造成了Activity既像View又像Controller(当然了Data-Binder的出现,可能会让View更像View吧)。

而MVP的出现,是的view层不能和Model层直接交互,Presenter作为中间的桥梁,连接view和model,将view和model完全解耦,使得Activity代码不再臃肿。

3.以请求服务端登录为例

学习过很多前辈的文章,讲解mvc模式时,基本都是使用登录为例,但是几乎都是使用本地数据模拟,所以相信很多人都有同一个疑问,网络请求部分的代码到底交给谁来做,Model?还是Presenter?呢。用户登录时,对于View层我们要定义View层的接口,也就是activity(或fragment,一下统称activity)的状态有哪些变化,

首先,用户点击登录要获取用户输入的用户名和密码,弹出正在登录,从服务端返回信息,toast弹出,dialog关闭,所以我们需要定义view层的这五种状态接口。

对于Model层,需要有用户登录的方法,传入用​
户名和密码(map),和回调接口。

该例子中使用的是自己封装的Volley框架,封装如下:(稍候会有源码给出)

activity请求登录时,直接通过Presenter操作,所以我们Presenter实现方法中有login方法,直接调用view层的接口和model的接口去实现。

而在view层,也就是对应的activity中只需要继承view层的接口,通过Presenter去操作其中的方法即可。

这样,实现一个网络请求判断用户登录,在view中的代码,就变得简洁多了,便于我们后期对代码的维护。

最后

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

资料⬅专栏获取
的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

资料⬅专栏获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/33028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转型指南】从软件测试到技术多面手

★ 导言 小艺是一位毕业于985的计算机硕士,工作多年,现在某大厂从事软件测试方面的管理工作。目前在工作中游刃有余,但面对技术的飞速变化和职业发展的不确定性,还是难免焦虑,正在积极思考如何进一步提升自己&#xff…

在Android系统中,查看apk安装路径

在Android系统中,应用通常安装在内部存储的特定目录下。要找到已安装应用的路径,可以通过ADB(Android Debug Bridge)工具来查询。以下是一些步骤和命令,可以帮助你找到应用的安装路径: 使用pm list package…

瑞_MongoDB_MongoDB副本集

文章目录 1 MongoDB副本集-Replica Sets1.1 简介1.2 副本集的三个角色1.3 副本集架构目标1.4 副本集的创建1.4.1 创建主节点1.4.2 创建副本节点1.4.3 创建仲裁节点1.4.4 初始化配置副本集和主节点1.4.5 查看副本集的配置内容 rs.conf()1.4.6 查看副本集状态1.4.7 添加副本从节点…

AIGC时代算法工程师的面试秘籍(2024.5.27-6.9第十五式) |【三年面试五年模拟】

写在前面 【三年面试五年模拟】旨在整理&挖掘AI算法工程师在实习/校招/社招时所需的干货知识点与面试方法,力求让读者在获得心仪offer的同时,增强技术基本面。也欢迎大家提出宝贵的优化建议,一起交流学习💪 欢迎大家关注Rocky…

ROS话题通信机制实操C++

ROS话题通信机制实操C 创建ROS工程发布方(二狗子)订阅方(翠花)编辑配置文件编译并执行注意订阅的第一条数据丢失 ROS话题通信的理论查阅ROS话题通信流程理论 在ROS话题通信机制实现中,ROS master 不需要实现,且连接的建立也已经被封装了,需要…

JDK17新增语法特征

1、引言 Spring Boot 3.0 开始不再支持 JDK 8,转而支持 JDK 17。 这篇博客我会列举较常用的新语法特性。 2、新增语法特征 2.1 yield关键字 从Java13开始引⼊yield关键字,yield关键字应用于switch语句中,我们可以使用yield来简化代码。 正常的…

2024.06.22【读书笔记】丨生物信息学与功能基因组学(第十七章 人类基因组 第一部分)【AI测试版】

第一部分:人类基因组概述与测序历史(详细版) 摘要: 第十七章深入探讨了人类基因组的复杂性、测序历程以及其对现代科学的意义。人类基因组由约30,000至40,000个蛋白质编码基因组成,这些基因的表达和变异构成了我们生物学特征和疾病倾向的基础。本章节详细回顾了人类基因…

前端算法题----三数求和问题

算法题讲解 真题描述: 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案…

Applied Spatial Statistics(七):Python 中的空间回归

Applied Spatial Statistics(七):Python 中的空间回归 本笔记本演示了如何使用 pysal 的 spreg 库拟合空间滞后模型和空间误差模型。 OLS空间误差模型空间滞后模型三种模型的比较探索滞后模型中的直接和间接影响 import numpy as np impor…

【html】用html写一个博物馆首页

效果图&#xff1a; 二级导航&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><l…

江协科技51单片机学习- p14 调试LCD1602显示屏

前言&#xff1a; 本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记&#xff0c;在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。 引用&#xff1a; 51单片机入门教程-2…

算法框架:冷部署实现优雅退出

冷部署实现优雅退出&#xff1a;背景与解决方案 在微服务架构中&#xff0c;服务的更新和部署是日常运维中不可避免的任务。然而&#xff0c;传统的冷部署方法往往会直接停止旧服务并启动新服务&#xff0c;这样会导致正在处理的请求被中断&#xff0c;进而影响用户体验。为了…

RabbitMQ消息队列 安装及基本介绍

一.MQ介绍 Message Queue &#xff08;MQ&#xff09;是一种跨进程的通信机制&#xff0c;用于在系统之间进行传递消息。MQ作为消息中间件&#xff0c;可以进行异步处理请求&#xff0c;从而减少请求响应时间和解耦 1.1 应用场景 1.1.1 系统之间通过MQ进行消息通信&#xff0…

leetcode 二分查找·系统掌握 x的平方根

题目&#xff1a; 题解 这题可以使用~01~泛型查找在0~x/2的范围内查找答案。 int mySqrt(int x) {long l0,rx,mid;while(l<r){mid(lr1)>>1;if(mid*mid>x)rmid-1;else lmid;}//因为一定有答案所以不用判定是否查找失败return l;}

Docker构建多平台镜像

docker的多架构镜像构建 目前很多服务器都是基于arm架构的&#xff0c;而现在大多数的docker镜像都是基于x86架构的。一种情况就是同样的代码编译成业务包做成镜像需要部署在不同架构的服务器上&#xff0c;这个时候我们就可以使用docker的多平台构建了。 以下操作是在centos7.…

数组、正则表达式、排序

数组 定义&#xff1a;在集合当中指定多个元素&#xff0c;元素的类型可以是整数也可以是字符串&#xff0c;也可以是浮点。 作用&#xff1a;可以一次性定义多个元素&#xff0c;可以为变量赋值提供便利。 数组的定义方法&#xff1a; 数组名 &#xff08;a b c&#xff0…

深入探索 Nuxt3 Composables:掌握目录架构与内置API的高效应用

title: 深入探索 Nuxt3 Composables&#xff1a;掌握目录架构与内置API的高效应用 date: 2024/6/23 updated: 2024/6/23 author: cmdragon excerpt: 摘要&#xff1a;“本文深入探讨了Nuxt3 Composables&#xff0c;重点介绍了其目录架构和内置API的高效应用。通过学习本文&…

pcl::PointXYZRGBA造成点云无法显示

如果pcd文件没有rgba信息&#xff0c;使用pcl::PointXYZRGBA类型打开会提示以下信息&#xff1a; Failed to find match for field rgba另外&#xff0c;显示出来的点云是黑色&#xff0c;如果使用默认背景色为黑色&#xff0c;就无法显示点云了。 如果设置其它背景色&#xf…

服务器防御ddos攻击

硬件层面&#xff1a; 1、高性能防火墙能有效过滤ddos攻击&#xff0c;可以有效的提高网络的抗攻击能力 2、使用流量清洗设备&#xff08;或者ddos防护设备&#xff09;可以过滤攻击流量&#xff0c;可以保护网站和服务器正常运行 软件层面&#xff1a; 1、 隐藏服务器真实IP 2…

命名冲突常见的领域

命名冲突确实是指在不同的来源或上下文中&#xff0c;同一实体&#xff08;可以是对象、变量、函数、类、文件等&#xff09;具有不同的名称。 在编程中&#xff0c;命名冲突可能发生在以下情况&#xff1a; 变量和函数重名&#xff1a;在不同的作用域或模块中&#xff0c;变量…