位置: 编程技术 - 正文

App工程结构搭建:几种常见Android代码架构分析(app的架构设计)

编辑:rootadmin

推荐整理分享App工程结构搭建:几种常见Android代码架构分析(app的架构设计),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:app设计架构图,app结构框架,app结构框架图,工程结构软件,工程结构软件,app结构设计,app结构设计,app构建流程,内容如对您有帮助,希望把文章链接给更多的朋友!

转载地址: 微盘

微盘的架构比较简单,我把最基本,最主干的画了出来:

第一层:com.sina.VDisk:com.sina(公司域名)&#;app(应用程序名称) 。

第二层:各模块名称(主模块VDiskClient和实体模块entities)

第三层:各模块下具体子包,实现类。

从图中我们能得出上述分析中一个最简单最经典的结构,一般在应用程序包下放一些全局的包或者类,如果有多个大的模块,可以分成多个包,其中包括一个主模块。

在主模块中定义基类,比如BaseActivity等,如果主模块下还有子模块,可以在主模块下建立子模块相应的包。说明一点,有的时候如果只有一个主模块,我们完全可以省略掉模块这一层,就是BaseActivity.java及其子模块直接提至第二层。

在实体模块中,本应该定义且只定义相应的实体类,供全局调用(然而实际情况可能不是这样,后面会说到)。在微盘应用中,几乎所有的实体类是以 xxx&#;info命名的,这种命名也是我赞成的一种命名,从语义上我觉得xxxModel.java这种命名更生动更真实,xxxModel给我一种太机 械太死板的感觉,这点完全是个人观点,具体操作中以个人习惯为主。还有一点,在具体的xxxInfo,java中有很多实体类中是没有get/set的方 法,而是直接使用public的字段名。这一点,我是推荐这种方式的,特别是在移动开发中,get/set方法很多时候是完全没有必要的,而且是有性能消 耗的。当然如果需要对字段设置一定的控制,get/set方法也是可以酌情使用的。

2. 久忆日记

相比于微盘的工程结构,久忆日记的结构稍微复杂了一些。如下图:

1).第一层和前面微盘一样的.

2).第二层则没有模块分类,直接把需要的具体实现类都放在下面,主要日记的一些日记相关的Activity。

3).第二层的实体包命令为model包,里面不仅存放了实体类xxx.java,而且存放了更高一级的实体类的相关类,比如 xxxManager.java,xxxFactory.java.关于这一点,我们可以参考一下android.jar中结构,我们发 现,Activity.java和ActivityManager.java,View.java和 ViewManager.java,Bitmap.java和BitmapFactory.java等等N多类&#;的一对类都在同一个包下,我个人觉得实体 包下存放实体类相应的Manager和Factoty类也是正确的,是我们应该采纳的一种结构。这里就打破了前面微盘中说的实体包下存放且只存放实体类的 说法了。在现实中,从灵活和合理的角度,久忆日记的这种实体包中存放对象内容更加实用。

4).第二层中增加了前面微盘中没有涉及到的config,constant和common包。第一,其中config中存储一些系统配置,比如名称,应 用参数等系统级的常量或者静态变量,当然,如果你有其他大模块的配置,比如如果拥有复杂的用户管理模块的话,完全可以增加一个 UserConfig.java中存储用户的一些配置信息等等。第二,constant包,此包下存放的都是public static final常量,定义状态,类型等等。出于性能考虑,android开发中我不推荐使用枚举。common包中定义一个公用库,这里因为应用单一,无法很 好的说明common包内容结构。

5).common包要涉及后面多个软件比较后我们再得出结论。

通过久忆日记的分析,借鉴到了不少的东西,使我们的架构更丰满更强大了。

3. 网易新闻

网易新闻确实做的不错,从应用的角度看,是我最欣赏的应用之一。它的工程结构是怎么样的呢?

网易新闻的工程结构和前面2各app又有很多的不同,它并没有按照模块来分,而是主要按照组件的类型来分的,然后把此类型所有的类全部放在其下。那么这种把所有activity全部放在activity包下的分法的确在android开发中比较普遍。

1).第一层被分成了两层,可以看出来,这里肯定是采用了公用包jar,如此说来,我们开发公用包的时候也应该按照"公司域名&#;公用模块名称"组合方式来命名比较好。

2).第三层(绿色层)中activity和service包下都是存放所有的activity组件和service组件,其实这里面包含了一种代码习 惯。往往activity相关的类如监听器,线程,适配器等非常多的类,这些不好直接丢在activity包下,而是直接写在相应的activity中以 匿名或者内部类形式定义,否则activity包和service包看上去会比较杂乱。

因为android的app很可能不是很大,activity或者service包也不会杂乱,所以网易新闻的这种方式也是很有参考借鉴价&#;的。

4. 小米应用

小米应用包括3个应用,小米分享,小米阅读,小米标签,从实际代码开发来看,我感觉不是同一个团队,或者同一组人开发的。 这种情况下,他们的架构又使如何?

App工程结构搭建:几种常见Android代码架构分析(app的架构设计)

上面的结构以及结构内部的细节其实很多地方我都是不大苟同的,但是能做出来好东西就是&#;得大家学习的,所以我只把其中我认为最&#;得学习的一点拿出来说。

首先,widget,provider这些特殊模块分类建立单独的模块包即可,这里久不多说什么。

第二,通过观察,我们发现小米分享中每个应用都有common包,不仅有应用程序级别的common包,而且有应用程序内级别的common包。我想说的 是,android开发中随着项目开发的积累,确能提取到很多公用的方法、类、功能模块。各个项目之间如此,各个项目内部也是如此,所以针对项目类被各个 模块调用的方法,类也可以提取出相应的公用库。

那么这里有个问题,公用common包的内部包可能涉及到很多的内容,是否要分包分级呢,又如何分包分级?我觉得,这个因情况而已,一般来说移动开发,为 了减少包的大小,我们会控制common包的膨胀,往往common包仅仅包括一些最简洁最经典的东西,东西又很少的话就无需分包,但是如果贵公司开发成 百上千,每个项目都用到行为分析,意见反馈等公用模块,分一下包会更清楚一点。总而言之,分不分包无关紧要,尽量让你的代码结构清晰,思路了然就好。

5. 聚各家之长,集大家之成

上面粗略的分析之后,我们应该对android程序的架构有一个感觉,清晰而杂乱。我也没有去了看更多其他应用的结构,暂时就总结一下,得出一个我们自己的通用的工程结构。

假如公司名为tianxia,目前公司准备开发读书应用,交友应用,生活服务应用。

第一时间我们应该得出下面这种整个的架构(具体的app开发当然要分开):

公司下开发3个应用reader,friend,life,其中common包为这三个应用共用,config,oauth为可选,view存放一些最通 用的自定义view,比如对话框,定制的列表等,如果你觉得有些view可能不会通用,最好把它放在应用程序类的common包下。

如果各位看过Android学习系列(6)--App模块化及工程扩展的话,对于这种多应用模式,应该存在android库共用情况,来解决资源替换,工程复用的问题。所以我又修改如下:

其中BaseApplication做一些所有app都会用到的基础初始化或者配置。之后其他应用的application应该都继承此BaseApplication。

base是一个android库,也是一个完整的android工程,而common只是一个jar文件,当然你也可以根据需要作为android库来开发。其他主工程reader,friend,life应该引用base工程。

ad包存放公司自定义的一些软广告。

feedback包下存储一些用户反馈等通用功能模块。

其实,很多情况下,upgrade模块也可以添加到base工程下,制定统一的软件升级机制。

接下来我们以reader为例子,来详细完成它的工程结构的设计。

其中,config包下的AppConfig.java存放应用程序的根配置,比如版本,目录配置等等。

module包下分为各个模块,blog为博客模块,bbs为论坛模块,person为整站个人信息模块,widget表示一种特殊功能模块。

common包下存放一些工具类,本应用程序的一些自定义View等等。

再结合之前所讲的内容,我们把整个串起来,完善一个reader的最后的架构如下(两外两个freind和life亦是类&#;如此):

注意:1).功能模块和类型模块均可以划分,如果没有需要的话,模块的划分都可以省略。

2).activity和service这类组件划分,如果没有需要的话,组件的划分都可以省略。

3).所有的划分,如果没有需要的话,所有的划分都可以省略。

但是,但是,这种分类,我个人还是觉得层次清晰,架构明朗,&#;得参考的,当然其中很多细节我也没有仔考虑,如有不妥,还请发现者指出。

Android学习 - Android断点续传核心代码 在网络应用特别是游戏中很多地方使用了下载的技术,下载过程中很有可能因为各种问题而是下载中断,如果重新下载会很吃力,当然如果你下载的东

android5.0系统设置搜索功能简析 一、目的:简单介绍系统设置搜索功能实现,初步熟悉搜索数据库构建规则以及匹配逻辑。二、相关问题解答1、系统设置可对那些设置项进行构建搜索

Android Service之设备存储空间监控 在负责文件系统模块的过程中,经常会碰到由于系统空间被消耗完而导致的问题,因此要确保为系统功能(如数据库同步)保留一定的空间。在功能机

标签: app的架构设计

本文链接地址:https://www.jiuchutong.com/biancheng/371094.html 转载请保留说明!

上一篇:持久化存储--2、SharedPreferences存储(持久化存储数据的方式)

下一篇:Android学习 - Android断点续传核心代码(android基础入门教程)

  • 工商年报中的资金数额怎么填
  • 房产税从租和从价
  • 汇算清缴退回的所得税
  • 知识产权申报费用多少钱
  • 非专利技术转让计入什么科目
  • 公司收到现金货款需要存入银行吗
  • 支付股权投资的会计科目
  • 咨询服务费要交税吗
  • 传媒公司的成本构成有哪些
  • 建筑企业1%承包承租个人所得税的会计分录
  • 员工一次性赔偿怎么算
  • 防伪税控技术维护费是进项还是销项
  • 个税经营所得预扣预缴
  • 价内税与价外税名词解释
  • 上年度职工工资总额
  • 携程只有电子发票吗
  • 预提差率费怎么记账
  • 企业所得税汇算清缴表
  • 电脑开机后一直滴滴
  • 股东退股资金如何返还
  • 电脑网页播放视频只有声音没有画面
  • 应付股利属于什么科目
  • 有销项无进项税务局会怎么罚
  • 特许经营企业广告语
  • win11中文安装包
  • 基本工程建设项目清单
  • 增值税专用发票有几联?
  • 大西洋跟太平洋有没有融为一体?
  • list.php
  • uniapp传值
  • 在妈妈身边的说说
  • 财行〔2019〕11号代扣代缴手续费的解读
  • pytorch example
  • 大二一学期学分多少合适
  • vue+element-ui项目
  • 贪吃蛇python小白
  • 一般纳税人怎么申报增值税
  • 小规模纳税人涉税会计分录是哪几个科目
  • 物流小规模企业有哪些
  • 小规模纳税人利润超过300万
  • 公司购买电脑怎么入账科目
  • 应收账款的账务改为公司招待费用怎么做会计分录
  • 差旅费抵扣进项税额
  • 工厂道路设计规范
  • 怎么打印银行对账单
  • 固定资产出售如何开票
  • 研发费用加计扣除75%还是100%
  • 长期应付款的会计编号
  • 疫情期间统筹部工作总结
  • 暂估入库的商品能出库吗
  • 建筑工程公司的经营范围有哪些
  • 资产负债表中应交税费为负数是什么意思
  • 餐饮有普通发票吗
  • 年报中的认缴出资时间怎么填
  • 记账凭证的基本要素包括哪些
  • DBCC CHECKIDENT 重置数据库标识列从某一数值开始
  • mssql insert into 和insert into select性能比较
  • 如何在windows中对硬盘进行分区
  • 老毛桃2013 U盘启动盘和重装系统图文教程
  • win8.1的开始菜单在哪
  • win8 metro应用
  • win10 自带
  • centos 安装chia
  • cad cl命令在哪里
  • python标准库函数有哪些
  • unity3ds
  • jquery动态设置css
  • 也论主板的扩展性
  • shell脚本调用脚本
  • Python 正则表达式入门(初级篇)
  • js获取鼠标坐标到浏览器底部
  • js跨域的几种方法
  • ADB not responding. You can wait more,or kill"abd.exe" process manually and click 'Restar
  • 一般纳税人销售米面粮油税率
  • 湖南省低保电话是多少?
  • 河南电子税务局残保金怎么申报
  • 资产管理公司收购不良资产后怎么处置
  • 河南省国家税务总局网站
  • 如何做好税务局长
  • 河北电子税务局社保缴费流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设