您当前的位置:首页 > 产品说明

产品APP架构说明文档

发布时间:2019-01-11 03:54:16 编辑: 浏览次数: 打印此文

  View interface:需要View实现的接口,View通过View interface与Presenter进行交互,降低耦合,方便进行单元测试

  感觉最大的差别差别就是view层和model层不再相互可知,完全的解耦,取而代之的presenter层充当了桥梁的作用,用于操作view层发出的事件传递到presenter层中,presenter层去操作model层,并且将数据返回给view层,整个过程中view层和model层完全没有联系,虽然view层和model层解耦了,但是view层和presenter层不是耦合在一起了吗?其实不是的,对于view层和presenter层的通信,我们是可以通过接口实现的,具体的意思就是说我们的activity,fragment可以去实现实现定义好的接口,而在对应的presenter中通过接口调用方法。解决了MVC模式中一个activity代码量太大问题,维护难的问题。

  具体可以参考我的视频播放器案例,记录视频播放中各个要点和代码逻辑思路,以及记录bug出现与解决办法,持续更新中。链接地址:

  具体可以参考我的音频播放器项目与笔记,记录音频的各种知识要点。关于音视频,涉及到编码解码的问题,比较复杂,比较复杂,链接地址:

  后来,参考大神思路,让View状态的切换和Activity,fragment彻底分离开,必须把这些状态View都封装到一个管理类中,然后暴露出几个方法来实现View之间的切换。 在不同的项目中可以需要的View也不一样,所以考虑把管理类设计成builder模式来自由的添加需要的状态View。关于项目的使用可以参考我的封装库案例。地址是:

  Retrofit 是 Square 公司出品的默认基于 OkHttp 封装的一套 RESTful 网络请求框架。

  Retrofit 的封装可以说是很强大,使用 Retrofit + OkHttp + RxJava + Dagger2可以说是目前比较潮的一套框架。

  图片加载在项目中许多地方都会用到,建议将所有的加载图片的方法整理成工具类,然后通过类静态调用方法,可以统一管理。那么使用的使用,就可以一行代码搞定,简洁代码。便于阅读与定位!

  关于activity,fragment,service等不同组件直接通信,可以使用事件总线框架。关于事件总线EventBus使用以及源码分析,可以参考我的博客:

  使用squareup公司出品的leakcanary框架,项目测试阶段不仅要修改崩溃bug,也要避免内存泄漏问题。关于常见的内存泄漏场景与解决办法,可以参考我的博客Leakcanary检测内存泄漏汇总:

  可以使用腾讯出品的bugly,集成第三方bug管理平台,可以有效收集广大用户APP使用崩溃情况。

  注意:关于第三方库选择,只选择合适的,不选择代码量最多的库。比如有些库,代码很多,功能很强大,但是你只是用到一个很小的功能。倒不如选择轻量级的库。

  可以用banner开源库,轮播图这块star最多,功能也很强大。代码量大,支持样式很多……

  2.3.1 对于UI中的字体颜色。可以参看新芽昊哥的做法,统一备注资源color属性。比如:

  看到网上好多案例,发现对于这个color资源文件,定义不规范而且有点杂乱,引用的使用会有点苦恼。

  2.3.2 关于这块,个人感觉非常不错,可以参考网易云音乐Android 3.0视觉设计规范文档:

  Android  APP开发需求文档范本 软件需求文档格式的标准写法 1.引言 1.1 编写目的 • 阐明开发本软件的目的; 1.2 项目背景 • 标识待开发软件产品的...来自:wuqilianga的博客

  产品设计是一个由抽象的概念到具体形象化的处理过程,通过文字或图像等方式将我们规划的产品需求展现出来。它将产品的某种目的或需求转换为一个具体的物理或工具的过程,把一种计划、规划设想、问题解决的方法,通过...来自:zhangbijun1230的专栏

  前三篇文章我们逐步梳理了产品的信息结构、框架结构、界面结构(原型),这一步我们就要根据之前完成的工作,开始正式撰写产品需求文档了(PRD文档)。通过之前的准备工作,我们更加清楚了产品的需求,并细致的考...来自:AfinalStone的专栏

  叫你怎么写开发文档:步骤描述:步骤描述需要一定的逻辑性。但不一定是纯文字形式,可以用公式,便于理解的伪代码+文字等方式进行步骤描述...来自:朱本福

  软件架构文档化       记录软件架构的活动就是架构编档过程,也就是架构的文档化。它包含两个方面:一是过程,编档过程能促使架构设计师进一步思考,使得架构更加完善;二是结果,描述架构的文档将作为架...来自:hu19930613的博客

  因公司申请软件著作权需要,我临时转行成为文员,写设计说明书,测试报告什么的。分享一下我的设计说明书部分纲要,仅供参考。...来自:Android_杜小菜_移动开发技术专栏

  文档说明 本文档描述的是某某某APP各页面的显示内容和功能要求。 APPV1.0更新说明 APP页面全部重新设计某页面的Banner某明细页面我的等级页面常见问题页面通知栏用户数据统计需要做...来自:iOS_Hy

  1 引言 1.1 编写目的:阐明编写详细设计说明书的目的,指明读者对象。 1.2 项目背景:应包括项目的来源和主管部门等。 1.3 定义:列出本文档中所用到的专门术语的定义和缩写词的愿意。 1.4 参...来自:橡树心的专栏

  前言 如果没有做过开发,研发过产品的人,很难体会做产品的艰难,刚进公司的人,一般充当的是程序开发,我这里说的是开发,它与研发是有区别的. 一个需求下来,如果不能很好地理解产品需求,如果不能很好的驾驭...来自:一杯甜酒

  项目架构分析 1.1-什么是架构 1.2-从系统层次进行架构分析 1.2.1-iOS系统框架介绍 1.2.2-软件架构分析 1.3-从应用层次进行架构分析 1.1-什么是架构? 我们人类在做事之前喜...来自:坤小的专栏

  一个系统设计的例子: 3DM客户端系统设计     一、系统设计   1.1、整体架构   3DM客户端系统按照逻辑划分,主要分为四层,基础类库层,数据层,业务逻辑层,UI展示层。每个层次由不同的模...来自:Kodulf的专栏

  前段时间一直在找工作,面试过程终于到了不少问题。有些是自己会的,有些是自己看过却无法整理出来的(说到底是理解不够头测,记忆不够深刻)。当然还有些是完全懵逼的。下面就来说下经常被问及,自己却无法当场整理...来自:Vioaos Blog

  在一个好的架构下编程,不仅对于开发人员是一件赏心悦目的事情,更重要的是软件能够表现出一个健康的姿态;而架构设计的不合理,不仅对于开发人员是一件受苦受难的事情,软件本身的质量更是受到严重威胁。 ...来自:万彬学习的博客

  本文来自 Qunar 技术沙龙,版权归原作者所有,未经许可,请勿转载。 作者简介:吴昊,2014年加入 Qunar,目前在去哪儿网玩乐事业部担任 Java 开发工程师,热爱技术,喜欢分享。 原文地...来自:p312011150的博客

  架构设计是需求分析到软件实现的桥梁,也是决定软件质量的关键。编制架构设计说明书是开发人员向架构师转变必定会经历的过程。在架构师整个的成长过程中,必定会经历编制架构设计说明书、评审架构设计说明书以及根据...来自:山鹰的专栏

  【课程主题】 主题:5天,一起从零开始学习BPM 【课程形式】 1.为期5天的短任务学习 2.每天观看一个视频,视频学习时间自由安排。 【第三天课程】 1.课程概要   ...

  【课程主题】 主题:5天,一起从零开始学习BPM 【课程形式】 1.为期5天的短任务学习 2.每天观看一个视频,视频学习时间自由安排。 【第五天课程】 1.课程概要 ...

  一、引言   2017年2月,知乎月独立用户设备数再次回升,相比1月上涨了11.2%,达到了1109万台。 1.1目的 通过对知乎这款产品的分析,锻炼自己的思维能力,深化自己对产品的理...来自:Welcome to PM

  本篇博客的内容为网上收集的mybaits面试的整合,出处忘记收集了。1、什么是mybatis?(1)mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语...来自:a745233700的博客

  1.1万前言 最近公司的另一个项目又要立项了,作为公司的唯一安卓工程师任务来了(新来的移动端的老大说项目还是主要你负责,我就负责帮你们安排下进度),听了这话我是伤心的在这公司不管是几个还是1个安卓开发都...

  对三者的学习已经有一段时间了,现在写了一个基础版本的整合Demo,因为下个项目就要正式开始了,这段时间会不断对该Demo进行扩展补充。 Demo的Github地址:来自:化身孤岛的瓜

  大型网站技术架构 核心原理与案例分析,很通俗易懂的一本书,个人认为最低门槛是2年以上经验的开发人员看。 曾经买过一本纸质的,后来借丢了。网上没有免费提供的,于是自己花钱买了本电子书。 作者不易,而且纸

  一个不错的word文档,讲清楚了什么是软件架构。看完后终于对软件架构有了一点浅显的认识,真正的了解得在不断的实践过程中学会。

  MarkDown 编辑不能用,用HTML重新写博客!!! 最近写完软件,需要申请软件著作权,费了很多时间了解如何申请,如何撰写申请资料,分成两篇文章特别记录下来——流程篇和资料篇,详细指导各位兄弟再...

  4481中国版权保护中心接收登记的文档包含两种:操作说明书或设计说明书。 设计说明书适合没有界面的嵌入式软件,插件软件,后台运行软件以及游戏软件。一般包含结构图,软件流程图,函数说明,模块说明,数据接口,出错...

  JpGraph简介       JpGraph是开源的PHP统计图表生成库,基于PHP的GD2图形库构建,把生成统计图的相关操作封装,隐藏了部分复杂的操作,使在PHP页面上输出统计图表变得更加容...来自:郎涯工作室

  测试环境莫名其妙有几条重要数据被删除了,由于在binlog里面只看到是公用账号删除的,无法查询是那个谁在那个时间段登录的,就考虑怎么记录每一个MYSQL账号的登录信息,在MYSQL中,每个连接都会先执...来自:路在脚下

  版权声明:本文为博主原创文章,未经博主允许不得转载。不经过允许copy,讲追究法律责任,欢迎加入我们的学习提升群466355109,可以相互交流...来自:程序猿开发日志【学习永无止境】

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦!...来自:websites

  上一篇文章讲解了SNMP的基本架构,本篇文章将重点分析SNMP报文,并对不同版本(SNMPv1、v2c、v3)进行区别! 四、SNMP协议数据单元 在SNMP管理中,管理站(NMS)和代理(Age...来自:假装在纽约

  Chapter 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 面向切面编程(AOP)通过提供另外一种思考程序结构的途经来弥补面向对象编程(OOP)的...

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗! Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件。 容器:类似一个轻量...来自:我走小路的博客

  扫二维码关注,获取更多技术分享 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...来自:Marswill

  人脸检测和识别- opencv3+python3完整实战项目源代码 识别视频《欢乐颂》中人物 python opecv3人脸检测和识别 项目源代码 识别视频《欢乐颂》中人物...来自:wyx100的专栏

  转载请注明出处哈:一、现象:     redis-cluster某个分片内存飙升,明...来自:欧辰的专栏

  一、概述 android系统电池部分的驱动程序,继承了传统linux系统下的Power Supply驱动程序架构,Battery驱动程序通过Power Supply驱动程序生成相应的sys文件系统,从...来自:lzpdz的博客

  本文介绍了 Visual Basic 中资源文件的多种使用技巧:①开发中英(简、繁)双版本的技巧;②实现“绿色”软件;③直接播放声音文件;④保存各类图标、光标图片等等。 ----------...来自:ROVAST的专栏

  自己整理编写的逻辑回归模板,作为学习笔记记录分享。数据集用的是14个自变量Xi,一个因变量Y的australian数据集。 1. 测试集和训练集3、7分组 australian ...来自:Tiaaaaa的博客

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...来自:九野的博客

  前段时间看了一些关于LSTM方面的论文,一直准备记录一下学习过程的,因为其他事儿,一直拖到了现在,记忆又快模糊了。现在赶紧补上,本文的组织安排是这样的:先介绍rnn的BPTT所存在的问题,然后介绍最初...来自:天道酬勤,做一个务实的理想主义者

  原文地址:因为需要用,所以才翻译了这个文档。但总归赖于英语水平很有限,翻译出来的中文有可能...来自:ymj7150697的专栏