Android应用框架设计

Android应用框架设计

1.主体框架

应用程序采用MVP架构,关于MVP框架的详细介绍,自行搜索学习,关于MVP框架的选择和实现,应用程序采用开源的MVP框架:https://github.com/sockeqwe/mosby

2.包结构

所有应用层程序,参考该目录结构进行编写,绿色部分是必须项,浅蓝色部分为可选项,{appname}对应程序的名称,例如开发一个微聊的应用程序,appname为weichat。

2.1.包作用说明

各个包,都具有它自身的一些职责,对应职责的代码放到对应的包目录下,下面将详细解释各个包的职责和它的详细目录结构。

  • module

模块,主要实现对应功能模块的视图代码和pensenter,由于pensenter和view强关联,也和应用的功能强关联,因此将他们放到同一目录下。至于service,这里指的是android系统的service,这个包为可选项,如果该功能模块需要后台服务功能,可以创建该包,并把对应功能代码放到该目录下,例如app升级模块功能,需要后台下载。

  • serve

服务,一个app,存在一部分业务逻辑的复用,例如初始化服务,推出登陆服务等等,这类服务功能,可供多个模块调用,并且实现对应的服务,需要调用dao、net甚至其他的服务。因此,针对app中的通用服务逻辑代码,在该包下实现。作为服务,必须有它对应的接口申明和实现。

由于服务之前会互相依赖,因此服务对象必须以单例模式进行实现,避免形成递归创建。

  • system

系统,app中存在部分与系统相关的功能调用,并且存在复用的情况,为了便于统一管理,以及单元测试,将这部分代码独立出来。

  • net

网络,由于app需要对接多套服务器环境,因此,net下根据服务器环境进行包划分,在http网络请求方面,app使用了rxjava+retrofit2+okhttp,因此只需要封装自己的拦截器(该部分代码封装在通用代码库中),对应的app接口代码,声明对应的接口url即可,详细实现这里暂不涉及。

  • event
    事件,这里主要定义eventbus使用的消息事件对象,便于管理整个app的消息事件,对应的消息事件处理,将分布到各个功能模块,或者application中。

  • data

数据,这里包含app的持久化信息,以及常量信息,着重说明一下这里的dao,该部分封装了数据库的访问,采用ormlite框架进行封装,app开发者只需要实现自己的DBManager,管理对应的数据包版本号即可实现对应的数据升级管理。

  • receiver
    广播接收器,这里就是指的android系统的广播接收器,例如在这里面定义接收推送信息的广播接收器,接收通知栏消息的广播接收器等等。

  • third
    第三方集成封装,例如关于高德地图或者百度地图的二次封装等。

  • contentprovider
    对应android系统contentprovider,对其他app提供对应的数据服务。

3.开源技术框架选用

目前,android开发社区关于app应用开发的各个层面,都存在一些成熟可靠的实现方面,采用合适的技术方案,有助于提高开发效率,改善代码质量,便于维护等等一系列优点,我们不闭门造车,自己封装的往往也没有开源项目的精良。

3.1.数据库

ormlite,ORM的概念在服务器领域的使用已经是稀松平常,应用到android数据开发,有利于简化数据库访问逻辑,降低开发难度,提高代码的可维护性。在这个基础上,我们在数据库访问增加数据缓存层,提高数据库访问效率,降低耗电(访问硬盘比访问内存耗电)。关于缓存的主要实现策略,一个某个缓存的数据发生了变化,就清楚该缓存数据,下次读取时,重新从硬盘中读取,然后缓存,简化缓存管理逻辑。

3.2.http网络访问

rxjava+retrofit2+okhttp,它们的优点就不解释了,反正就选他们了,当然rxjava不仅仅用于网络访问,还运用于app中的逻辑链式调用,线程切换处理等,强大到你难以想象。

3.3.单元测试

robolectric+powermock+mockito+junit,目前android单元测试,这是已知最靠谱的方案。

3.4.事件处理

eventbus,用于处理应用内之间的消息传递,当然还存在其他的处理方案,我们觉得这种方式比较合适。

3.5.内存泄露检测

leakcanary,作为一个有追求的程序员,怎么能容忍内存泄露的存在,改善应用内存泄露情况,就靠它了。

3.6.布局文件依赖注入

butterknife,摆脱findViewById的厄运。当然,在使用androidstudio时,不要忘记了安装Zelezny这个插件,这样在开发过程中,可以更加的偷懒了。





转载于:https://www.cnblogs.com/zhoujunhua/p/5307079.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值