【转】一个Android项目搞定所有主流架构-1.项目介绍和基本MVC架构示例

http://www.jianshu.com/p/798536fb91c5

项目启发来自谷歌的同类框架项目
https://github.com/googlesamples/android-architecture

然后找了个自己练手的App做了个更简易好理解版本的同类项目,开了个超级大坑~
https://github.com/boredream/DesignResCollection

欢迎star项目以及follow我,项目将持续更新!!!


DesignResCollection

提供同一个App的不同架构实现,对其进行对比分析,方便大家选取使用

为什么要做这样一个项目

Android 的框架多用MVC模型进行开发,而其中的Activity经常承担了大量的V和C的工作,既处理逻辑又处理UI。
因此Activity中很容易聚集大量代码,造成结构复杂混乱、测试维护困难等诸多不便。

这个项目就是为了帮助解决这个问题的。其中将提供一个相同的应用程序,然后使用不同的框架实现之。

您可以使用本项目中的示例代码作为参考,或者直接作为项目的架子在此之上继续开发自己的项目。
本项目中,主要关注的重点在于代码的结构框架、测试以及可维护性。
但是要注意,这里提供了不同的架构,各自有自己的优缺点。因此在选取时要根据自己的需要选择对应的框架结构。
比如你只是一个简单的App,不需要单元测试,功能UI都比较少,那直接MVC结构即可。


代码示例 [持续开发中...]

显示设计网站中收集来的资源的一个应用DesignResCollection,不同结构对应不同的[_结构后缀]。
比如基本的MVP结构就是 DesignResCollection_MVP。不同结构的具体介绍请查看对应文件夹中的README.md

已开发完成的示例

待开发的示例

其他相关示例

  • DesignResCollection(ing...) - 完整App代码,不断丰富完善中,实现一个最终完整版。本项目中的示例是基于此项目做了功能和页面上的精简,便于演示不同代码结构。
  • DesignCollectionCloudEngine - 部署在LeanCloud上的云代码项目,用于定时爬取数据保存到LeanCloud中为应用提供数据来源的。

开发计划

2016.8.17~
DesignResCollection_MVP/ - Model-View-Presenter 结构。


通用依赖框架

  • 使用LeanCloud作为后端服务,比较简单,无需自行开发。
  • 使用LeanCloud的Restful-API接口。(不用LeanCloud的Android SDK,更贴近于实际开发中用开发接口文档的情景)
  • 网络框架部分使用Retrofit2.0 + RxJava。
  • 图片使用Glide。
  • 代码助手Model常见工具类、功能等都封装到了这个依赖Model中,一来为了方便,二来让注意力更集中在项目框架结构上。

到底使用哪种框架使用在我自己的app中?

每个框架示例中都有一个README,你可以先查看下每种的特点。
最终项目里还会对比下所有框架的优缺点列出来,方便你根据自己具体情况进行全面的比较选取。


应用截图

device-2016-08-17-142555.png

device-2016-08-17-142654.png

device-2016-08-17-142712.png

device-2016-08-17-142739.png

使用

在Github中下载~ 解压~ Open对应框架项目的文件夹

时间: 2024-12-20 03:26:09

【转】一个Android项目搞定所有主流架构-1.项目介绍和基本MVC架构示例的相关文章

[转]MVC4项目中验证用户登录一个特性就搞定

本文转自:http://www.mrhuo.com/Article/Details/470/A-Attribute-For-MVC4-Project-Used-To-Validate-User-Login 在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用方对操作方法的访问. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inhe

转:C4项目中验证用户登录一个特性就搞定

转:C4项目中验证用户登录一个特性就搞定 在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性.     // 摘要:    //     表示一个特性,该特性用于限制调用方对操作方法的访问.    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]    public class AuthorizeAttrib

企业sudo权限规划详解 (实测一个堆命令搞定)

简述问题: 随着公司的服务器越来越多,人员流动性也开始与日俱增,以往管理服务器的陈旧思想应当摒弃,公司需要有 更好更完善的权限体系,经过多轮沟通和协商,公司一致决定重新整理规划权限体系,主管明确指出权限存在的问 题,并需要解决以往的root权限泛滥问题. 我作为本次权限规划的发起人,我了解到了公司现状后,经过多次与相关员工及领导沟通,确认了公司存在的 部分问题:  运维部基本入职离职流程中存在一些账号问题: 如  离职不报备,系统权限不回收.账号密码过于简单化 这样无疑给公司的服务器及数据安全造

Linux运维--企业sudo权限规划详解 (实测一个堆命令搞定)

简述问题: 随着公司的服务器越来越多,人员流动性也开始与日俱增,以往管理服务器的陈旧思想应当摒弃,公司需要有 更好更完善的权限体系,经过多轮沟通和协商,公司一致决定重新整理规划权限体系,主管明确指出权限存在的问 题,并需要解决以往的root权限泛滥问题. 我作为本次权限规划的发起人,我了解到了公司现状后,经过多次与相关员工及领导沟通,确认了公司存在的 部分问题:  运维部基本入职离职流程中存在一些账号问题: 如  离职不报备,系统权限不回收.账号密码过于简单化 这样无疑给公司的服务器及数据安全造

【Android自定义ViewGroup】不一样的轮子,巧用类变量解决冲突,像IOS那样简单的使用侧滑删除,一个控件搞定Android item侧滑删除菜单。

================================================================================== [1 序言] 侧滑删除的轮子网上有很多,最初在github上看过一个,还是ListView时代,那是一个自定义ListView 实现侧滑删除的,当初就觉得这种做法不是最佳,万一我项目里又同时有自定义ListView的需求,会增加复杂度. 写这篇文章之前又通过毒度搜了一下,排名前几的CSDN文章,都是通过自定义ListVIew和Vie

Linux服务器其中一个磁盘满了怎么办?一个软连接就搞定。

适用环境要求:Linux系统及服务器.有管理员权限.存在多余空间的磁盘例如下图中"/home"在磁盘sda5中与"/"不属于同一块磁盘: 1.首先转移正在使用的将要满的磁盘中文件夹,我们环境中的是"/home/aaa",移动到"/"根目录中(先确保根目录中不存在这个文件夹): 命令:"mv /home/aaa /aaa"2.做ln -s 命令创建软连接(这里不做ln -s的解释,有兴趣可以去各大搜索引擎查找

MVC4项目中验证用户登录一个特性就搞定

在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用方对操作方法的访问. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)] public class AuthorizeAttribute : FilterAttribute, IAuthorizationF

全能无线渗透测试工具,一个LAZY就搞定了

近来一直在研究无线安全方面的东西,特别是在无线渗透测试这块,每次渗透测试时总要来回不停的切换操作和挑选利器,很是麻烦.就想看看是否可以有一款功能全面的集合型工具. 正所谓功夫不负有心人,还真有这么一个工具出现在我的眼前.它便是名为LAZY script应用于Kali Linux下的执行脚本.该脚本可以自动执行有关Wi-Fi穿透和黑客攻击的绝大部分应用程序,同时它还集合了大量不同类型的攻击程序,可谓是集众家之长于一身.这么好的东西,必须和各位小伙伴一起分享. 其实,这样一款好的工具,不仅可以让从事

一个拓扑,搞定BGP13条路径选择算法 - 案例分析

1.1.BGP协议最佳路径选择算法 BGP是一个路径矢量路由协议,也就是说,它的工作就是在自主系统间交换路由信息,以便发现访问互联网某处数据的最有效路径.每个 BGP路由器通过邻居声名与周边的一个或多个路由器连接.一旦建立了邻居关系,这些BGP路由器之间就会相互交换路由信息.据我最近一次统计,整个互联网上有大约12.5万个路由信息,因此要配备一个强大的路由器才能将所有BGP路由信息接收下来. 1.1.1.BGP 最佳路径选择算法概述 由于整个互联网的BGP路由表有超过30万个路由,同时一个BGP