【转】android技术栈
android技术栈
开发工具
Android studio
开发语言
Java
自动化构建
gradle
app技术组织架构
基础层
基础框架层专注于技术领域实现,提供app公有特性,避免重复制造轮子。注重性能和稳定性。需要不断稳固提高健壮性。
1. 网络通信
网络通信底层选型的是成熟框架okhttp,上层则是自有封装库,针对原生框架进行了请求和回调上的封装。
2. 数据库操作
少于5张表的单表CRUD工作一般用原生DB搞定,较复杂数据存储业务选用greenDAO框架。是一个轻量级且快速的ORM框架。
3. JSON解析
选用Google公司的gson框架,可以将JSON字符串反序列化为对应的Java对象。
4. 日志记录
集成腾讯Bugly工具,提供异常上报、运营统计以及版本升级功能。
5. 适配器
针对RecycleView封装的列表适配器框架,实现上拉加载、下拉刷新、头部尾部view和分类type等功能。稳定无bug。
6. 屏幕适配
选用AutoLayout百分比适配框架,可以自适应适配90%屏幕分辨率。
7. 依赖注入
选用jakewharton的ButterKnife注解框架,同时集成生成器插件可自动生成view对象。
8. 图片缓存
选用Google推荐的Glide图片框架,轻便灵活。
需要优化的地方
网络框架上层考虑选用Rrtrofit框架,是将REST API转换为Java接口的一个开源函数库,基于注解使代码变得更简洁,需要服务器遵循REST规范。
组件层
组件层会针对行业领域的实现、业务类型的实现进行不同的选型,下面列举的是最常用的可固定选型的基础组件。
1. 支付功能
目前支持支付宝和微信,有成熟的对接方案。
2. 社交分享
目前支持微信好友、微信朋友圈、QQ分享及短信分享。
3. 视频服务
基于保利威视开源视频库进行的再封装和重构,可以实现视频上传、视频下载、视频播放的功能。
4. 即时通讯
目前选用环信即时通讯技术,包括两个库,一个底层通讯库、一个UI库。
5. 推送服务
目前选用极光推送。
6. 图片压缩
自封装图片压缩工具类,主要实现Bitmap图像压缩和图片文件压缩。
7. 视频压缩
基于FFmpeg开源库自编写的视频压缩工具类,实现百分比进度、多比率调节、视频截取第一帧等功能。
8. 插件框架
其他小插件依赖库例如:图表、轮播图、侧滑、图片缩放等。
需要优化的地方
事件总线:近期引入RxJava,一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库。
应用层
目前主要开发架构:MVC + MVP 混合模式,简单业务MVC分层,复杂业务MVP分层。
1.MVC
主要架构选型,优点:快速开发,熟悉度高。缺点:页面与业务逻辑耦合度高。
2.MVP
次要架构选型,优点:分层明确,耦合度低,有利于复杂业务开发。缺点:简单页面有过度设计之嫌,反而会浪费时间。
3.MVVM
还在摸索中,熟悉度低。
【转】android技术栈的更多相关文章
- 聊聊真实的 Android TV 开发技术栈
智能电视越来越普及了,华为说四月发布智能电视跳票了,一加也说今后要布局智能电视,在智能电视方向,小米已经算是先驱了.但是还有不少开发把智能电视简单的理解成手机屏幕的放大,其实这两者并不一样. 一.序 ...
- 如何使用Microsoft技术栈
Microsoft技术栈最近有大量的变迁,这使得开发人员和领导者都想知道他们到底应该关注哪些技术.Microsoft自己并不想从官方层面上反对Silverlight这样的技术,相对而言他们更喜欢让这种 ...
- 快速了解Scala技术栈
http://www.infoq.com/cn/articles/scala-technology/ 我无可救药地成为了Scala的超级粉丝.在我使用Scala开发项目以及编写框架后,它就仿佛凝聚成为 ...
- SpringBoot技术栈搭建个人博客【后台开发】
前言:在之前,我们已经完成了项目的基本准备,那么就可以开始后台开发了,突然又想到一个问题,就是准备的时候只是设计了前台的RESTful APIs,但是后台管理我们同样也是需要API的,那么就在这一篇里 ...
- 技术栈(technology stack)
technology stack 技术栈: 产品实现上依赖的软件基础组件, 包括 1. 系统 2. 中间件 3. 数据库 4. 应用软件 5. 开发语言 6. 框架 https://en.wikipe ...
- 基于.Net进行前端开发的技术栈发展路线(二)
前言 上一篇<我的技能树>文章分享了我的技能成长过程,还未完成,今天继续跟大家分享. 01 我的技能树 我的当前的技能树: 其中,标注为黄色旗帜的是基本掌握,标注为红色旗帜的为使用熟练.未 ...
- 重谈react优势——react技术栈回顾
react刚刚推出的时候,讲react优势搜索结果是几十页. 现在,react已经慢慢退火,该用用react技术栈的已经使用上,填过多少坑,加过多少班,血泪控诉也不下千文. 今天,再谈一遍react优 ...
- 基于.Net进行前端开发的技术栈发展路线(一)
前言 今天想讲讲的是我的技术树.我最初是做CS开发的,第一阶段的技术经历是以Powerbuilder来做CS开发,第二阶段开始基于C#做winform开发,眼看前端开发越来越流行,需要更广泛的技术栈势 ...
- 关于Java 软件工程师应该知道或掌握的技术栈
鄙人星云,今天突然想写这么一篇需要持续更新的文章,主要目的用于总结当前最流行的技术和工具,方便自己也方便他人. 更新时间:2018-10-23 09:26:19 码农职业路径图 码农入门职业路径图 J ...
随机推荐
- ios状态栏的一些操作
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES; //显示 [UIApplication sharedA ...
- (C)非局部跳转语句(setjmp和longjmp)
1. 特点 非goto语句在函数内实施跳转,而是在栈上跳过若干调用帧,返回到当前函数调用路径上的某一语句. 头文件包含#include Void longjmp(jmp_buf env,int val ...
- RecyclerView 局部刷新(获取viewHolder 去刷新)
RecyclerView.ViewHolder viewHolder = mRecyclerView.findViewHolderForAdapterPosition(i); if (viewHold ...
- My Notes
1.类似于border.margin.padding的四个方向数值顺序为上右下左.2.属性z-index参数值越大,则被层叠在最上面.3.标签<a>和属性display:block和适合在 ...
- LA-2678 (尺取法)
题意: 在一个长度为n的序列中,找到最短的长度序列,使其和大于等于s; 思路: two pointer ,水题; Ac代码: #include <bits/stdc++.h> /* #in ...
- MYSQL数据库学习----插入、更新、删除
一:插入数据 1 为表的所有字段插入数据 INSERT INTO 表名 (值1,值2, 值3...); 2 为表的指定字段插入数据 INSERT INTO 表名(字段1,字段2,...) VALUES ...
- 笔记本创建wifi热点
如何在Win8系统上建立WIFI热点 | 浏览: 2511 | 更新: 2013-04-10 01:55 | 标签: win8 59 28 全文阅读分步阅读 步骤 1 2 3 4 5 6 7 8 ...
- C++实现利用(前序和中序生成二叉树)以及(二叉树的镜像)
#include<iostream> #include<string.h> #include<stack> using namespace std; typedef ...
- JS实现系统时间(自动)
转自:https://blog.csdn.net/qq_35607510/article/details/54600563
- Ubuntu解决中文乱码
gsettings set org.gnome.gedit.preferences.encodings candidate-encodings "['GB18030', 'UTF-8', ' ...