浅谈android架构设计

到目前为止,android开发在网络上或者社区上没有公认的或者统一的开发框架,好多框架都是基于对方法的封装。今天在这浅谈两年来对android开发的理解,主要是思想上的理解,希望对大家有帮助。

我认为android开发可以从两个方面去总结架构的设计,在这里对于实现只做陈述:

一,就是大多数人的设计思路,对方法的封装。

在这里我根据开发的习惯对工程进行包的设计:

1. http:网络请求方法封装。这里建议采用线程+Handler的模式,把Http 中get方法和post两种请求方式分开,对于正常的操作逻辑采用post的方式,方便数据的封装,加密和安全。对于获取图片,视频这个可以通过一个URL直接拿来主义的操作用get的方式,速度快且不复杂。

2. thread:既然http要采用线程的方式那么自然的线程管理就是一个重点,建议整个App对线程进行统一的管理,根据线程池的特性封装多线程和单线程,每次要启用线程的时候都到线程池里面去取,这样整个App的线程数,占用内存的大小基本就在掌控之中了。

3. download:对apk的下载或者对图片,视频的下载管理。期间结合多线程,软引用,本地存储,内存存储的方式就可以多线程下在图片。下载图片处理结果有两种方式一种直接传递显示Imageview显示,但是这种方式想对返回的图片进行处理就不是很方便了,所以建议再加上回掉的方式,传递回掉的对象,需要回掉到页面处理就添加回掉事件。

4. upload:上传文件,图片,视频等,这块上传的时候可以进行对文件的压缩再上传会更好些。

5. dao:对数据库的操作,建表,版本控制,添加数据,对数据的增,删,改,查。

6. file:对文件的操作。

7. utils:工具类。

8. exception:异常类,异常类主要是结合http请求返回的错误码进行解析,还有项目运行中对一些细节进行捕获。

9. log:log的封装须实现三种,a:开发调试;b:发布时错误log保存本地;c:发布是必要错误日志发送服务器。

10. bean:数据封装bean。传递数据建议通过bean用Json和Gson相互转换的方式进行。

二,可以从根据数据以及数据的业务逻辑处理进行设计。

以上是大多数人的封装思路,主要是针对方法的封装,下面要说的是对上面的封装整合到实际项目业务中处理的方式,主要是针对业务的封装,在这里大方向上主要应用了两个设计模式:中介者模式,MVP模式。其间大量用到工厂模式,单利模式,模板模式,观察者模式等等。

整体思想是:

11. daorest,httprest,filerest:这几个包主要封装了app与各个渠道的交互之间的接口,可根据实际的项目需求进行添加,里面没有实现方法,所有的类全部是接口。

12. mediator:中介,如果用普通的方式进行交互的话我们用A,B,C代替三个来源不同的接口,如果有个页面V需要用到这三个来源,那么就会有V和A交互,V和B,V和C两两交互,要是有复杂的关系没准会有V和AB交互等等,这样交互关系就像一个没有规则的网,很难理清楚。这时候我们用一个中介的话问题就会大大改善,我们引入一个中介M这个时候ABC被整合到M中,ABC对于V的关系无论多复杂,由内部整合,最后由M统一发出对V的交互,这时候关系就很清楚。V和ABC无论谁需要改变都不会影响到对方,M充当了一个调停的关系所以中介模式又叫调停者模式。

13. presenter:这就是MVP模式中的P。很多人都说android不能很好的区分MVC模式,因为Activity中既包含了V也包含了C,其实android真正的V层我感觉应该是XML层,但是XML层没法动态改变数据。所以索性我们退一步,让activity也作为我们唯一的V层,这个时候MVP就诞生了。其中的MV跟MVC中的MV是一样的,P就是我们添加的一个处理Activity中业务的层,我们把他命名为Presenter。P的主要作用就吧原来Activity中一切的数据业务处理挪到了P层,让Activity成为一个纯纯的V。具体的实现方式可参考:http://blog.csdn.net/zhouyinhui/article/details/4614474

14. view:Activity实现层。

最终总结下来工程的目录也大概出来了,这里主要介绍的就是Mediator+MVP模式的框架结构以及大致实现思想,其中还有好多细节,比如说各层业务中各个业务接口就需要abstracts限制,管理就需要用工厂模式,代码的实现方式就需要模板,View层状态的变更就需要观察者模式等等。需要写好一个框架是要很大功夫的需要不断的积累不断的重构。啊,对了还差几个目录一并补上。

15.service:android服务不会随应用的关闭而关闭。经常会被第三方软件关掉。

16.broadcase:广播,再通知各个activity之间的状态的时候很管用,跟观察者模式类似。

希望所写对大家有帮助,互相学习!



时间: 01-18

浅谈android架构设计的相关文章

[Android 泥水匠] Android基础 之一:浅谈Android架构到HelloWorld案

作者:泥沙砖瓦浆木匠 个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 如果我的帮到了你,是否乐意捐助一下或请一杯啤酒也好呢?有你支持,干的更好~ 点这参与众筹 我的支付宝:13958686678 1.1前言 泥瓦匠又和大家见面了,在移动平台干过原生态开发,也干过hybrid应用.可以看看相关的文章 Android UI .所以多多少少在这块还是有点了解.现在很多高级语言可以开发app程序,包括Android,到我觉得目前Java语言开发Android程序还是很火,很重要的.自

[Android 泥水匠] Android基础 之一:浅谈Android架构到HelloWorld案例的剖析

作者:泥沙砖瓦浆木匠 网站:http://blog.csdn.net/jeffli1993 个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 交流QQ群:[编程之美 365234583]http://qm.qq.com/cgi-bin/qm/qr?k=FhFAoaWwjP29_AonqzL0rpdQAjjqlHQQ 如果我的帮到了你,是否乐意捐助一下或请一杯啤酒也好呢?有你支持,干的更好~ 点这参与众筹 我的支付宝:13958686678 1.1前言 泥瓦匠又和大家见面了,在移

浅谈Android五大布局

Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Android的五大布局分别是LinearLayout(线性布局).FrameLayout(单帧布局).RelativeLayout(相对布局).AbsoluteLayout(绝对布局)和TableLayout(表格布局). LinearLayout: LinearLayout按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后

浅谈三层架构(2)

感受: 对于三层的学习,自己刚开始的感觉真的是一头雾水啊,当时真的出现了很烦躁的感觉,我想这种感觉的出现真的是很可怕的,就这样耽误了两天,在网上也搜寻者自己想要的资料,昨天四姐也好心给调试了一番,顿时把自己的大脑打通了,其实问题难不难,就在于能不能打开思路了! VB.NET的三层实现: 上篇文章主要是对于三层有了一个表面的理解,下面针对机房收费登陆界面来进行一下简单的理解: UI层主要就是表面的构建,多以需要使用windows窗体来完成,而其他BLL和DAL则不需要,之间建立一个类库则可以完成自

浅谈Android五大布局(二)——RelativeLayout和TableLayout

在浅谈Android五大布局(一)中已经描述了LinearLayout(线性布局).FrameLayout(单帧布局)和AbsoulteLayout(绝对布局)三种布局结构,剩下的两种布局RelativeLayout(相对布局)和TableLayout(表格布局)相对之前布局结构稍显复杂一点,所以这里另起篇幅进行介绍. RelativeLayout: RelativeLayout按照各子元素之间的位置关系完成布局.在此布局中的子元素里与位置相关的属性将生效.例如android:layout_be

浅谈Android五大布局(二)——RelativeLayout和TableLayout【转】

http://www.cnblogs.com/wisekingokok/archive/2011/08/24/2152004.html 在浅谈Android五大布局(一)中已经描述了LinearLayout(线性布局).FrameLayout(单帧布局)和AbsoulteLayout(绝对布局)三种布局结构,剩下的两种布局RelativeLayout(相对布局)和TableLayout(表格布局)相对之前布局结构稍显复杂一点,所以这里另起篇幅进行介绍. RelativeLayout: Relat

浅谈Android应用保护(二):Anti-Analysis的方法和工具

本文内容翻译自国外文献,原文链接请参看文章底部 之前讲到过,应用开发者为了保护自己的应用不被别人分析和篡改,会将应用的安全性寄托在某个(些)机制上.可以被用来保护应用的机制有很多,效果和实现难度也是各有特点.有这样一类应用保护方法,叫做针对逆向工具的对抗(Anti-Analysis). 针对逆向工具的对抗,简单来讲就是利用逆向工具自身的缺陷或者是Android特有的机制,使应用逆向分析工具在工作过程中失效或者报错崩溃,分析过程无法继续实施.从而达到保护应用的目的. 这种保护应用的方式的优点就是实

浅谈网站架构演变

浅谈网站架构 作为一个从事后台开发已经2年的程序员来讲,大部分时间都忙于业务逻辑分析,往往忽略了业务之上的架构层面的设计. 本文作为网站架构知识的补充,不仅开拓了眼界,也对以后的程序设计益处多多.下面我们就一起来看看网站架构的演变历史. 网站架构的演变大致分为如下几个阶段: 1 初始阶段的网站架构 网站在最初开始时没有太多人访问,用一台服务器就完全可以胜任,此时的网站架构如下图所示. 应用程序,文件存储,数据库所有的资源都在一台服务器上.也就是经典的LAMP架构模型(Linux操作系统+部署在A

浅谈Android多屏幕的事

浅谈Android多屏幕的事 一部手机可以同时看片.聊天,还可以腾出一支手来撸!这么吊的功能(非N版本,非第三方也能实现,你不知道吧)摆在你面前,你不享用?不关注它是怎样实现的?你来,我就满足你的欲望! 一部手机可以同时看片.聊天,还可以腾出一支手来撸==!就像这样: 是时候告别来回切换应用屏幕的酸爽了,还可以在分屏模式下两Activity间直接拖放数据! 好高大上的样子!这是怎么实现的?别急,我们一一道来: kitkat(4.4)版本对多任务分屏的实现 由于相关的代码和功能被封装及隐藏起来,所