android序经典架构.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
android序经典架构

Android 程序框架设计1、主要说明框架说明:1 基于HTTP协议进行通信2 利用json格式传输数据。客户端以POST方式用UTF-8编码提交网络请求,主要模块有通用framework,view视图,业务逻辑(系统调度)模块,本地数据处理模块,http模块,工具类。http请求解析,传输到业务处理模块,然后本地处理数据模块进行文件保存,若展示则 通过业务处理模块,最终在view视图上显示。2、设计细项2.1 共通类的设计概念完整性:12345- 开发过程中,需求、设计、编码的一致性- 整个程序具有统一的风格,比如对话框样式,按钮风格,色调等UI元素- 整个程序具体统一的结构,比如不同模块访问网络,它们的调用方式一致,例如异步访问都用回调方式通知结果,相同的功能应该提取成共通模块。- 开发人员能很好的执行需求人员和设计人员的意图。- 有完整的文档,需求文档,设计文档,测试文档,处理流程的文档等。2.1.1 Widget设计 尽量在style文件中定义样式。TextViewEditTextButtonTitle barTool bar…### 为什么要提供这些共通控件? ###统一字体大小,如App字体不随系统字体变化而变化统一UI式样,如Button, EditText具有相同的背景等复用代码2.1.2 Adapter Items根据式样,提取需要在AdapterView中显示的Item简单的复合布局自绘制,从而提高滑动性能- ListView中放Gallery时,提高上下滑动性能- 尽量优化绘制### 数据驱动 ###Adapter Items提供核心的方法- setData(Object data)- getData();Adapter#getView实现更加简单- 实现简单- 不会因为UI变化而变化下面代码示例了Adapter#getView()方法的实现,它返回BookView,BookView提供方法来接收数据,至于BookView的显示,则根据设置的数据来显示,这就是数据驱动UI。 1 2 3 4 5 6 7 8 91011121314@Overridepublic View getView(int position, View convertView, ViewGroup parent) { if (null == convertView) { convertView = new BookView(getContext()); convertView.setLayoutParameter(new AbsListView.LayoutParameter(150, 150)); } Book book = m_bookList.get(position); BookView bookView = (BookView)convertView; bookView.setBook(book); return convertView;}2.1.3 Dialog扩展于Dialog类提供Dialog关闭的事件Dialog的高度随内容的变化而变化可以设置按钮的文字,可见性,字体等方法设置按钮点击事件的listener要考虑对话框的三个属性:Title, Content area, Action buttons2.1.4 Utility工具类统一放于一个包下面。-LogDateFormatBitmapNotificationShared PreferenceEnvironmentDevice…2.2 Task管理线程只是一种机制,保证我们要完成的任务不运行在UI线程(也就是说不阻塞UI),完成的任务才是我们关注的核心,因此,我们可以通过设计,把线程封装,让使用者根本感觉不到是线程,他只用关心他要做的事情就行了。这里,我们可以设计一种”异步链式调用”的框架,把线程进行了封装。使用都只需要这样用:12345new TaskManager().next(task1).next(task2).next(task3)..execute();这里,task1, task2, task3是顺序执行的,举个例子:我们要访问网络,取得一个图片,使用这个TaskManager我们需要3个task,task1:显示一个ProgressDialog。task2:访问网络,创建bitmap。task3:关闭对话框,显示bitmap。这一点,可以参考CoreLib工程中的task.TaskManager类。关于TaskManager,有以下几点需要注意:-封装了线程让调用者只关注自己的业务处理保证顺序链式地执行某一个任务上一个任务的输出,作为下一个任务的输入能暂停、恢复任何一个任务2.3 缓存设计-把内存占用量大的对象存放在缓存中,如bitmap利用了Ca

文档评论(0)

qi1920809 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档