@author ASCE1885的 Github 简书 微博 CSDN html
最近发现最美应用这样一个网站,它会按期推介一些颇有意思的app,做为开发者,每次看到很棒的app都会从实现角度进行剖析,想着若是是本身将如何实现呢?所以,就有了这个系列的文章,旨在从技术选型和架构的角度解读一些有意思的app。
最美时光是最美应用团队出品的一个记念日app,用于记录和分享那些重要的日子,咱们就先从这个开始吧! java
Timber是明星程序员JakeWharton开源的一个日志记录函数库,它基于Android Log类基础上, 提供了简洁可扩展的API。 android
日志记录行为被抽象为一颗一颗的树🌲,例若有打印日志到Logcat的树,有打印日志到文件的树等等,若是咱们要使用某种类型的树,首选须要建立一个实例,并调用Timer.plant函数将其种植下来,以后就能够随意使用了。 git
ActiveAndroid是目前常见的几个ORM框架之一(除此以外,比较有名的开源解决方案还有GreenDAO和ORMLite),能够极大的简化数据库的使用,使用面向对象的方式管理数据库,告别手写SQL的历史。每个数据库表均可以被映射为一个类,开发者只需使用相似save()或者delete()这样的函数便可。 程序员
参考文档:
官方文档 github
GSON是Google出品的函数库,能够将JSON字符串反序列化为对应的Java对象,或者反过来将Java对象序列化为对应的JSON字符串。免去了开发者手动经过JSONObject和JSONArray逐个JSON字段进行解析的烦恼,也减小了出错的可能性,加强了代码的质量。 数据库
这个控件是在Android 2.3及以上平台实现的兼容Android L平台引入的View点击涟漪效果。 缓存
OkHttp是一个高效的HTTP客户端,具备以下特性: 安全
OkHttp在网络性能不好的状况下可以很好的工做,它可以避免常见的网络链接问题。若是你的HTTP服务有多个IP地址,OkHttp在第一次链接失败时,会尝试其余可选的地址。这对于IPv4+IPv6以及托管在冗余数据中心的服务来讲是必要的。OkHttp使用现代的TLS特性(SNI, ALPN)初始化HTTP链接,当握手失败时,会降级使用TSL1.0尝试初始化链接。
更详细的使用方法参见文档。
android-wheel是Android平台上使用普遍的滚轮选择器,可用于实现日期时间选择器,省市区三级选择菜单等等。在最美时光这个app里面是做为日期时间选择器使用,效果以下所示:
okio做为java.io和java.nio的补充,是由square公司开发的一个函数库,使得开发者能够更方便的访问,存储和处理数据。一开始是做为okhttp的一个组件存在的,固然咱们也能够单独使用它。
Retrofit是将REST API转换成Java接口的一个开源函数库,它要求服务器API接口遵循REST规范。它基于注解使得代码变得很简洁,Retrofit默认状况下使用GSON做为JSON解析器,使用OkHttp实现网络请求,三者一般配合使用,固然咱们也能够将这二者替换成其余解析函数库。
参考文档:
Retrofit官方文档
快速Android开发系列网络篇之Retrofit
Retrofit – Java(Android) 的REST 接口封装类库
再谈RESTAPI最佳实践
使用Android API最佳实践
深刻剖析Android网络开发库-part1: OkHttp, Volley and Gson
Android平台上普遍使用的下拉刷新组件,Github上star五千多,目前再也不维护。支持的下拉刷新控件有:
这个函数库简称UIL,是一个功能强大灵活且高度可自定义的用于加载,缓存和显示图片的开源函数库,它提供一系列配置选项,并能很好的控制图片加载和缓存的过程。
主要特性有:
参考文档:
Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
Android 开源框架Universal-Image-Loader彻底解析
Android Universal Image Loader 源码分析
小米推送(MiPush)是小米公司为开发者提供的消息推送服务,经过在云端和客户端之间创建一条稳定、可靠的长链接,为开发者提供向客户端应用推送实时消息的服务,帮助开发者有效地拉动用户活跃。
友盟统计分析平台是国内最大的移动应用统计分析平台。咱们帮助移动应用开发商统计和分析流量来源、内容使用、用户属性和行为数据,以便开发商利用数据进行产品、运营、推广策略的决策。
友盟用户反馈SDK两行代码实现开发者和用户轻松高效沟通。收集用户建议,了解用户需求,解决用户问题,全在应用以内。
微博 Android 平台 SDK 为第三方应用提供了简单易用的微博API调用服务,使第三方客户端无需了解复杂的验证机制便可进行受权登录,并提供微博分享功能,可直接经过微博官方客户端分享微博。
最美时光app用到的底层函数库基本上遵循Android开发者必知的5个开源库这篇文章介绍的函数库进行搭建。技术选型中规中矩,都是一些成熟稳定且常见的函数库,避免了开发人员流动形成的代码熟悉成本,团队新成员可以较快上手,并且也避免了开源库隐藏的bug可能形成的版本delay,由于越是成熟的开源库社区越成熟,bug也越少,就算出现新的bug,也能很快获得解决。
对于规模较小的团队,咱们建议技术选型时尽可能选择成熟的框架,特别是对初创公司。当公司和团队发展到必定阶段后,能够适时的引入新技术或者新框架,激活团队成员的技术敏感度。在大公司中,通常存在基础架构组这样一个团队,他们服务于全公司各个产品线,为其提供基础能力建设。固然对于团队成员总体技术水平都很高的团队来讲,就算是初创公司,也有不少抛弃成熟稳定的技术或框架,转而选择新崛起的技术或者框架,由于每每新技术或框架相比成熟的技术或者框架而言更优,虽然可能存在更多的隐藏bug。说到底,技术选型是公司规模和团队素质的一个综合选择。
国外开发者对新技术的接受度和敏感度远高于国内开发者,这一点是毋庸置疑的,下一篇文章咱们未来看看德国出品的一款厨房故事app,能够很容易看到技术选型上面的差别化。
文末摄影鉴赏