浅谈android中的MVC--【2】

Unity跨平台存储避坑指南:persistentDataPath权限真相 Application.persistentDataPath是Unity中用于持久化数据的核心路径,表面提供跨平台抽象,实则底层访问机制因操作系统而异。其原理并非简单路径映射,而是受Android Scoped Storage、iOS Data Protection、Windows组策略及macOS隐私权限等多层安全模型动态约束。技术价值在于保障用户数据长期可靠存储,但若忽略平台差异,极易引发‘本地正常、真机崩溃’‘iOS可存、Android报错’等线上事故。典型应用场景包括游戏存档、离线缓存、自定义资源包 阅读详情

前篇:浅谈android中的MVC--【1】

此篇结合SourceCode谈一下。。。


Android中的MVC


View层

UI的描述一般来说都是用的res中的那一堆xml


Controller层

Android的Controller基本上就Activity。个人觉得严格意义上讲,Activity还承担了一部分View跟Model之间的交接。


Model层

针对业务逻辑,进而开发的IO,NIO,DB,之类的操作都在这里。


MVC代码讲解


Controller层


public class MainActivity extends Activity implements CalculatModelImpl.onCalculatListener{

   private EditText mTxt1, mTxt2;
   private TextView mResult;
   private Button mCal;

    private CalculatModelImpl mModel;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTxt1 = (EditText) findViewById(R.id.txt1);
        mTxt2 = (EditText) findViewById(R.id.txt2);
        mCal = (Button) findViewById(R.id.cal);
        mCal.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            mModel.calculate(Integer.valueOf(mTxt1.getText().toString()).intValue(), 
                  Integer.valueOf(mTxt2.getText().toString()).intValue(),
                  MainActivity.this);
         }
      });
        mResult = (TextView) findViewById(R.id.txt_result);
        mModel = new CalculatModelImpl();
    }
   @Override
   public void onSuccess(int result) {
      mResult.setText("success:" + result);
   }
   @Override
   public void onError() {
      mResult.setText("failed...");
   }
}

Activity实现了CalculatModelImpl.onCalculatListener,并在onCreate中,实例化了CalculatModelImpl,在mCal中设置Listener,做实际的运算。

这里Activity作为Controller,获取了Views,起了承载与View相关操作的转接。

通过实现CalculatModelImpl.onCalculatListener的方式处理Model层返回的结果。在View层更新UI。

在View.onClickListener中进行实质上的Model层的调用。

整个MVC的框架就出来了。


Model层


public class CalculatModelImpl implements CalculatModel{

   public CalculatModelImpl() {
   }
   public interface onCalculatListener {
       public void onSuccess(int result);
       public void onError();
   }
   @Override
   public void calculate(int num1, int num2, onCalculatListener listener) {
      try {
         int result = num1 / num2;
         android.util.Log.e("eee", "eee  result = " + result + "  num1 = " + num1 + "  num2 = " + num2);
         listener.onSuccess(result);
      } catch(Exception e) {
         listener.onError();
      }
   }
}

这里CalculatModelImpl实现了CalculatModel。在calculate中做了具体的逻辑处理。

这样,逻辑处理 就被完全封装在Model中.


小结

MVC有缺点!!!随着,界面的复杂性增加,Activity不仅要负责View的控制,还要负责Model与View之间的传递。

就会出现臃肿的代码。。。View层缺乏基本的控制,Controller又太多其他的工作。。。

Halcon图片拼接避坑指南:特征点匹配常见问题与解决方案 本文深入解析Halcon图片拼接中特征点匹配的常见问题与解决方案,涵盖特征点提取、匹配优化及变换模型选择等关键环节。针对工业视觉检测中的拼接错位、重影等问题,提供参数调优、图像预处理和算法选择等实战技巧,帮助开发者高效避坑并提升拼接精度。 阅读详情

相关推荐

Linux内核支持串口屏,linux串口触摸屏设计总结

Linux serial touch 设计总结概述:最近在做嵌入式linux下串口触摸屏设计,遇到一些问题,经过查找资料和请教同事,总算把问题解决了,事后有把linux相关的内核代码仔细看了一遍,为了有点成果,特别写了个总结。如有任何问题请联系yxj_5421@http://www.doczj.com/doc/87b94b1e227916888486d76d.html,转载请标明出处。系统资源:L...

weixin_39935903的博客 1297

android 之 activity 和 controller 架构设计

public abstract class ActivityBase extends Activity { public static final String TAG = "ActivityBase"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCrea

张国祥的专栏 2198

matinal:S4 HANA 详解ACDOCA与BSEG的区别都在这了

当你在Coding Block中添加自定义字段的时候

matinal 當冬夜漸暖 。公众号:matinal 4582

Android中的MVC

Android中的MVC View层 UI的描述一般来说都是用的res中的那一堆xml Controller层 Android的Controller基本上就Activity。个人觉得严格意义上讲,Activity还承担了一部分View跟Model之间的交接。 Model层 针对业务逻辑,进而开发的IO,NIO,DB,之类的操作都在这里。 MVC代码讲解 Controller层 ...

我的未来鵏溡儚 326

强化学习 reward 曲线可视化:从基础绘制到顶刊级对比分析

本文详细介绍了强化学习reward曲线的可视化方法,从基础绘制到顶刊级对比分析。通过matplotlib和seaborn的实战示例,展示了如何优化曲线图的视觉效果,包括多实验对比、置信区间添加和分面图应用。文章还分享了顶刊级图表的进阶技巧,如字体排版、颜色选择和关键标注,帮助研究者提升论文图表质量。

weixin_29096377的博客 270

STM32F103C8T6通过ESP8266连接阿里云物联网平台(附代码)

STM32F103C8T6连接阿里云物联网平台(1)—阿里云lot Studio控制 Web开发 分享一下自己使用stm32f103c8t6通过ESP_01模块连接阿里云物联网平台,实现温湿度上传和控制命令下达的过程,能力有限,用的是最简单的方法,如有错误,多多担待。 一、硬件选型 1、 stm32f103c8t6 2、ESP_01 wifi模块 3、其他 二、硬件连接 WSP_01 STM32F103C8T6 RXD PA2 TXD PA3 RES PA4 VCC 3.3

weixin_A13253323604 3万+

创建android项目!不断提升自己创造溢价的能力,成功入职阿里

前言 每个程序员都有一个梦想,那就是进一线互联网公司深造,不要跟我说你不想进去,如果给你一个这样的平台,不管是薪资待遇还是接触的高度来说,对我们程序员来说都是一个机会,我以前有一个同事,就是从阿里出来的,原来是p7,后面来了我们这里当了技术总监,人家的代码写的让你不得不服。 今天我特意收集了最新面试题,虽然花了一些时间,经过整理之后分享给大家,大家一起来看看什么互联网面试题,一起来认识一下,看看自己能掌握多少! 1. Android架构设计模式 MVC架构设计模式:MVC全名是Model View Con

Sunbuyi的博客 616

SAP公司间外协业务流程以及配置说明

SAP公司间外协业务流程以及配置说明

竹大的博客 7170

SSM框架中Dao层,Mapper层,controller层,service层,model层,entity层都有什么作用

SSM是sping+springMVC+mybatis集成的框架。 MVC即model view controller。 model层=entity层。存放我们的实体类,与数据库中的属性值基本保持一致。 service层。存放业务逻辑处理,也是一些关于数据库处理的操作,但不是直接和数据库打交道,他有接口还有接口的实现方法,在接口的实现方法中需要导入mapper层,mapper层是直接跟数据库...

每一步,都在缩短你与梦想的距离。 11万+

facebook协议

支持同时登录多个Facebook账号,按照关键词采集小组地址,群发小组,批量添加推荐人,群发推 荐人消息,采集个人Facebook用户,群发用户私信,群发主页评论。通过客服台管理功能,和粉丝互动聊天,通过话术快捷回复,自动翻译聊天记录。通过FaceBook小组采集小组成员id,或者通过FaceBook个人主页,采集主页上粉丝批量操作已FaceBook账号添加推荐热,可以指定添加某个国家的推荐人,可以设置每个账号添加推荐人个数去重模式:所有的FaceBook账号不添加重复的推荐人。

2503_90751938的博客 959

一文搞懂蚁群算法Ant Colony Optimization(ACO)!!!(灵感起源+数学原理+代码实现+实战应用)

本文系统介绍了蚁群算法的原理与实现。首先从蚂蚁觅食行为出发,阐释了信息素正反馈机制如何引导群体找到最短路径。随后详细解析了算法的数学模型,包括状态转移规则和信息素更新机制。通过MATLAB代码演示了算法在旅行商问题(TSP)中的应用,展示了路径构建和优化的完整流程。最后讨论了算法的优势、局限性和实际应用场景。蚁群算法通过模拟生物智能,为解决复杂优化问题提供了一种高效方法,其核心在于信息素的正反馈机制与随机探索的平衡。

qq_42212808的博客 887

Android框架模式——MVC

1. MVC介绍 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种框架模式。 Model:模型层,负责处理数据的加载或存储。 View:视图层,负责界面数据的展示,与用户进行交互。 Controller:控制器层,负责逻辑业务的处理。 1.1 作用 将业务逻辑、数据、界面分离的一种代码组织方式,修改界面时无需去修改业务逻辑。 1.2 流程 1.View接受用户的请求,然后将请求传递给Contro

weixin_42602900的博客 737

详解大模型微调数据集构建方法(持续更新)

本文详细介绍了大模型微调数据集构建方法,希望能对学习大模型的同学们有所帮助。 文章目录 1. 前言 2. 微调数据集构建方法 2.1 方法一 2.2 方法二 2.3 方法三 2.4 方法四 2.5 方法五

herosunly的博客 28万+

浅谈Android中的架构模式——MVC(一)

平常我们Android开发时,特别是刚开始学习的时候总会一股脑地把所有代码都放到Activity/Fragment里编写,虽然能实现功能,但是在业务逐渐多起来的时候,甚至说没有繁杂业务,有繁杂操作的时候,整个Activity/Fragment的代码体积就会越来越庞大,也难以去维护,甚至你看回自己的代码都得花费老半天时间。 那么这里我就浅谈一下如何将一些常用的框架应用到Android开发中...

CarsonWoo的博客 709

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

浅谈MVC思想

1. 为什么需要MVC ?  软件中最核心的,最基本的东西是什么?  答:是的,是数据。我们写的所有代码,都是围绕数据的。      围绕着数据的产生、修改等变化,出现了业务逻辑。      围绕着数据的显示,出现了不同的界面技术。没有很好设计的代码,常常就会出现数据层(持久层)和业务逻辑层还有界面代码耦合的情况。ORM等框架,解耦合了业务逻辑和数据之间的耦合,业务逻辑不再关心底层数据如何

it_guang的博客 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

安卓项目架构浅谈

项目架构,从最初的单module代码级分包到如今的基于module的模块化演变;而单module内部代码结构,从mvc(不算是)到mvp再到结合google新出的带有生命周期的viewmodel、livedata等构建的mvvm演变。谈一谈自己的安卓项目架构经历。 从事安卓一开始便入得小公司,一路走来项目全靠自己搭建,当时一个app模块包含所有业务功能代码。app模块内部结构,分三大块,网络、u...

gdsjzb704004的博客 2790

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

浅谈MVC、MVP

从名称上来看mvc分别是model view controller而mvp是model view presenter,首先两者最大的区别就是到底是谁去渲染布局数据,我们都知道展示界面数据有几个步骤,读取xml渲染界面,请求网络等到数据,把网络数据渲染到布局文件上展示出来,在这个几个步骤中两种框架大不相同 。两者的区别:   android中展示界面最重要的就是activity,然后由他去读取xml...

Allen的博客 2971

浅谈android mvc、mvp架构思想

MVC概念        MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。其中M层处理数据,业务逻辑等;V层处理界面的显示结果;C层起到桥梁的作用

a06963938的博客 382

浅谈Android开放中的架构模式MVC和MVP的区别

浅谈Android开放中的架构模式MVC和MVP的区别 MVC架构模式 1.Model:模型层,负责处理数据的加载或者存储 2.View:视图层,负责界面数据的展示,与用户进行交互 3.Controller:控制器层,负责逻辑业务的处理 在 MVC 架构中,View 产生事件,通知到 Controller,Controller 中进行一系列逻辑处理,之后通知给 Model 去更新数据,Model 更新数据后,再将数据结构通知给 View 去更新界面。这就是一个完整 MVC 的数据流向。其实在 Andro

想要ac的ac选手的博客 204

(转)Android浅谈-MVC、MVP、MVVM

分享一篇不错的文章,微信推送的,截取其内容,对于这三种模式分析得挺深入,也算是对安卓常用框架的一种总结。 一、为什么要用框架或者模式 使用架构的目的是使程序模块化,做到模块内部的高聚合和模块之间的低耦合,使得程序在开发的过程中,开发人员只需要专注于一点,提高程序开发的效率。 而且最重要的一点,架构和模式并不是说让你的代码量更少了,往往可能还会增大,但是它帮你在逻辑上更简单的了,很好的定义了单...

lan_学习分享 253

浅谈Android开发中的MVVM模式及与MVP和MVC的区别

三种架构模式的演化:什么是MVVM?MVVM是Model-View-ViewModel的简写。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTe

2079

浅谈android中的MVC--【1】

前言:回忆下MVC 这是维基百科的解释Link:https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller 稍作修改。应该是这样的 一直以为android是很好的支持了MVC。我一直都觉得这很怪。到底算不算MVC呢? 答案是肯定的。。。 先看下android项目的文件目录结构

王学明 951

浅谈Android中MVC、MVP、MVVM模式(三)

三、MVVM的义军突起     前面,在《浅谈Android中MVC、MVP、MVVM模式(一)》和《浅谈Android中MVC、MVP、MVVM模式(二)》中我们学习了MVC和MVP,并分析了两者的差异,下面就让我们继续学习下MVVM。     MVVM是Model-View-ViewModel的简写,MVVM框架的由来便是MVP模式与WPF结合的应用方式时发展演变过来的一种新型架构

A-Miracle 844

浅谈Android MVC、MVP、MVVM架构

为什么做架构设计 谈架构之前,我们应该理解,为什么需要做架构设计? 这个问题,单看网上各种架构优缺点分析、什么解耦、方便测试之类的,是很难有深入的理解的,必须要结合实际的项目经验去思考。相信很多小公司的同学会和我有一样的疑问,没有这些所谓的架构,照样代码能写的很嗨,尤其是在项目迭代初期和写一些简单页面时,直接编程反而更加直观更加快速。架构似乎并没有那么牛逼,能够显著提高我们的开发效率。 其实...

u010390677的专栏 328

架构浅谈之 MVC

很多人表示对架构没有任何概念,想了解下架构,但是看了网上的一些文章又觉得云里雾里,其实架构远没有那么难,今天从这篇文章开始我来给大家谈谈架构,争取让大家都看得懂。 1什么是架构? 对于架构,业界从来没有一个统一的定义,架构一词最初来自建筑业,假如我们要盖一栋大楼,那在完成这么一项重大工程之前肯定需要建造师的建筑图纸,而这建筑图纸可以说是建筑业

1190

mvc三层架构_架构浅谈之 MVC

很多人表示对架构没有任何概念,想了解下架构,但是看了网上的一些文章又觉得云里雾里,其实架构远没有那么难,今天从这篇文章开始我来给大家谈谈架构,争取让大家都看得懂。1. 什么是架构?对于架构,业界从来没有一个统一的定义,架构一词最初来自建筑业,假如我们要盖一栋大楼,那在完成这么一项重大工程之前肯定需要建造师的建筑图纸,而这建筑图纸可以说是建筑业架构的最核心体现,它描述了这栋大楼的外观、内部构造、户型...

weixin_39588542的博客 308
上一篇: 浅谈android中的MVC--【1】
下一篇: 浅谈MVP模式
手艺人王学明
手艺人王学明 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄17年 441粉丝 185原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值