开源一个小APP(明天计划),欢迎交流Android架构
2017-03-16 00:00
323 查看
项目传送门:http://git.oschina.net/imxiaoyu/TomorrowPlan
版权声明:本app进提供交流使用,版权归我本人所有,本套架构可以随意使用,但不可将APP上传各大应用市场,若是使用本套架构而非同类型产品,则无限制。
整套架构的核心在于将业务、逻辑、代码的粒度划分得更细,尽量让每一个类的代码不超过三百行,业务分类更加的清晰明了,把UI和业务逻辑尽量的结耦合。
WiKi有粗略的说明,不明白或者有觉得不妥的地方,欢迎加入交流群(群号:616045201)
项目的不足:
因为这个app一开始的时候并不是用的这个架构,只是花了一天的时间重构整理,所以很多地方整理的并不是很彻底,所以可能会出现某些地方看着有些不伦不类。之后如果有精力,可能会抽点时间再整理一下。
common模块我是搭建有另外的一个库,所以这里就把common的git管理去掉了,之后会一直更新,当然,更新的幅度不会很大,主要是更新一些我需要用到的工具类或者UI组件。传送门:http://git.oschina.net/imxiaoyu/android_common_tools
APP截图:
代码包大致目录:
架构大概说明:
common:主要是用于存放一些公共类库、组件、工具等等,为方便管理,独立成了一个库出来,可以多个应用共享使用。
core:主要存放一些与项目相关的配置文件、辅助工具、信息缓存等等。
domain:程序入口
module:具体的业务模块,后续会详细讲解
第二个home的主要结构是HomeActivity类,然后还会继续的分几个包,具体的包会根据需求而定,主要有四大类:view、adapter、helper、presenter。
版权声明:本app进提供交流使用,版权归我本人所有,本套架构可以随意使用,但不可将APP上传各大应用市场,若是使用本套架构而非同类型产品,则无限制。
整套架构的核心在于将业务、逻辑、代码的粒度划分得更细,尽量让每一个类的代码不超过三百行,业务分类更加的清晰明了,把UI和业务逻辑尽量的结耦合。
WiKi有粗略的说明,不明白或者有觉得不妥的地方,欢迎加入交流群(群号:616045201)
项目的不足:
因为这个app一开始的时候并不是用的这个架构,只是花了一天的时间重构整理,所以很多地方整理的并不是很彻底,所以可能会出现某些地方看着有些不伦不类。之后如果有精力,可能会抽点时间再整理一下。
common模块我是搭建有另外的一个库,所以这里就把common的git管理去掉了,之后会一直更新,当然,更新的幅度不会很大,主要是更新一些我需要用到的工具类或者UI组件。传送门:http://git.oschina.net/imxiaoyu/android_common_tools
APP截图:
代码包大致目录:
架构大概说明:
整体架构
整个业务处理的架构采用的是类MVP架构,最核心的思想是吧系统的粒度降到最小,能分就往下分,让每一个类最多不超过300行代码。整体架构主要氛围4个结构:common、core、domain、module:common:主要是用于存放一些公共类库、组件、工具等等,为方便管理,独立成了一个库出来,可以多个应用共享使用。
core:主要存放一些与项目相关的配置文件、辅助工具、信息缓存等等。
domain:程序入口
module:具体的业务模块,后续会详细讲解
Common详解
base
base主要用于存放一些常用类的父类(基类),主要作用是方便快捷的为一些重复性的业务提供更为方便快捷的方法。主要需要注意:adapter、helper、presenter、ui、popup_window这几个包。每一个Activity如无特殊需求,都必须继承于BaseActivity。impl
impl主要用于存放一些常用的自定义回调接口。utils
utils主要是各种各样的工具类widget
widget主要是存放一些有特殊功能的自定义控件Core详解
cache
cache下的每一个类都需要继承BaseSharedPreferences,主要作用是缓存数据,列表数据通常都是采用json字符串的当时缓存通过轻量级存储SharedPreferences来完成。custon
算是整个程序的入口,具体需要在androidmainfest.xml中配置entity
一些用到的或者可能用到的实体类network
主要是存放tcp连接相关的一些东西,如果是http请求的话,会将封装的一些东西,放在跟network同级别的一个叫做http的包里remote
主要是遥控器的,负责的是与SDK的交互操作,接口地址:https://wiki.bomeans.com/index.php/Android_IR_SDKroute
route只有一个类AppRoute,起作用主要是将整个app的所有页面跳转都集中到AppRoute这个类来处理,相当于是请求分发。而具体的跳转方法不再使用原始的startActivity(intent);的形式,而是将StartActivity方法封装在每一个Activity页面的一个公共的静态方法中,如果需要带值跳转,则可以更加的方便处理,如:public static void startActivity(Activity activity,int sceneType){ ALog.e("sceneType1:"+sceneType); Intent intent=new Intent(activity,SceneEditorActivity.class); intent.putExtra(ACTIVITY_DATA_SCENE_TYPE,sceneType); startActivity(activity,intent); }
Domain详解
没啥好说的,程序的第一个页面,通常是启动页Module详解
Module下面通常会根据项目的大小对项目进行分层,本项目采用的二层的形式,即要定位到一个HomeActivity页面,类路径是module.home.home.HomeActivity.class,即Module的本身是一个大模块,然后根据功能分类划分为多个小模块,最后每一个小模块有多个页面。在module.home.home中,第一个home是一个多个小模块,会包含多个页面,第二个home则是具体的页面集合,因为一个页面不单单只有Activity类一个类,还需要其他配套类,所以第二个home可以说只是HomeActivity这个页面的类合集。第二个home的主要结构是HomeActivity类,然后还会继续的分几个包,具体的包会根据需求而定,主要有四大类:view、adapter、helper、presenter。
view
一个Activity虽然只算是一个页面,但是一个页面也会有许许多多的复杂情形,若是逻辑或者任务简单,可以直接写在Activity中,但是如果是业务稍稍复杂一点,那就按具体的任务分出来会方便管理很多,可扩展性也强上很多。adapter
列表适配器,值得注意的是,最开始的ListView或者GridView,都统一用recyclerview来替代,而adapter和里面的holder都需要基础Base基类, 详情看core/base里面的类。helper
小工具类,介于普通的方法和Utils公用工具类之间。,即只是针对本APP的特定场景的小型版本的Utils。presenter
主要用于处理一些比较繁杂的且与UI无关的业务,如:网络请求等其他注意事项
在同一个“home”包下,无论是activity还是其他的view、helper、presenter等等,都应该是互联互通的。即view里面可以通过HomeActivity的方式将getActivity()强制转换成homeActivity对象,然后对其他的helper、view等做交互处理。相关文章推荐
- 开源一个小APP(明天计划),欢迎交流Android架构
- 【android】开源一个企业通讯录app
- 一周开发app__Android开源计划
- [Android]如何做一个崩溃率少于千分之三噶应用app(15)-View分发module架构
- 我搞了一个开源的项目,网址http://akenxp.gro.clinux.org目前还是计划阶段,欢迎大家加盟。
- [Android]如何做一个崩溃率少于千分之三噶应用app(14)-Fragment分发module架构
- Android开源计划-一周开发app
- [Android]如何做一个崩溃率少于千分之三噶应用app(13)-Activity分发功能module架构
- 一个定期翻译国外Android优质的技术、开源库、软件架构设计、测试等文章的开源项目 http://www.devtf.cn
- Android 开源项目Kotlin+MVP+Retofit2+RxJava2架构开发一款短视频App
- 一个定期翻译国外Android优质的技术、开源库、软件架构设计、测试等文章的开源项目
- 一个定期翻译国外Android优质的技术、开源库、软件架构设计、测试等文章的开源项目
- 优秀自定义控件开源项目推荐:让你的app提升一个档次-Android酷炫自定义控件
- [Android]如何做一个崩溃率少于千分之三噶应用app(13)-Activity分发功能module架构
- 滴滴国际化项目 Android 端演进 2017-12-01 Java和Android架构 热文导读 | 点击标题阅读 厉害了!如何Python写一个安卓APP,附源码! 吊炸天!74款APP完
- Android开源一个后台基于bmob云端的社交app
- [已开源/文章教程]独立开发 一个社交 APP 的源码/架构分享 (已上架)
- RunHelper,一个为跑步而设计的开源的android app
- Android开源计划-一周开发app
- 一个定期翻译国外Android优质的技术、开源库、软件架构设计、测试等文章的开源项目