今天看了一篇文章,说的是程序员的宿命就是不断地学习!
我是个喜欢不断学习新知识,探索新东西的人,无论是对于技术还是生活,我都有着足够的好奇心,我觉得只有这样,人生才会更快乐一些。然而,在学习的过程中,归纳和总结知识,整合资源的能力也是非常重要的。所以,今天正好有点时间,就整合一下Android学习路上进阶的内容。
在文章开始之前想先分享两篇不错的文章。
我的 Android 开发实战经验总结 ——简书上看到的一篇不错的文章
http://www.jianshu.com/p/4f152bc8f4f3
还有一篇是Android学习之路 stormzhang 张哥的文章。
Android开发如何进阶?
http://mp.weixin.qq.com/s?__biz=MzA4NTQwNDcyMA==&mid=403072488&idx=1&sn=12a1deee3c00da644ad3844032a2374f&scene=0#wechat_redirect
接下来是我整理的 Android进阶学习内容:
-
okhttp
square 开源的 http 工具类
项目地址:https://github.com/square/okhttp
文档介绍:http://square.github.io/okhttp/
特点:(1) 支持 SPDY( http://zh.wikipedia.org/wiki/SPDY )协议。SPDY 协议是 Google 开发的基于传输控制协议的应用层协议,通过压缩,多路复用(一个 TCP 链接传送网页和图片等资源)和优先级来缩短加载时间。
(2) 如果 SPDY 不可用,利用连接池减少请求延迟
(3) Gzip 压缩
(4) Response 缓存减少不必要的请求 -
Retrofit
RESTFUL API 设计
项目地址:https://github.com/square/retrofit
文档介绍:http://square.github.io/retrofit/
-
EventBus
greenrobot 的开源项目
项目地址:https://github.com/greenrobot/EventBus
原理剖析文档:EventBus
文档介绍:https://github.com/greenrobot/EventBus#general-usage-and-api
特点:(1) 支持在不同类型的线程中处理订阅,包括发布所在线程,UI 线程、单一后台线程、异步线程
(2) 支持事件优先级定义,支持优先级高的订阅者取消事件继续传递,支持粘性事件,是不是跟系统的有序广播、粘性广播很像啊
(3) 不是基于 annotations
(4) 性能更优
(5) 体积小
(6) 支持单例创建或创建多个对象
(7) 支持根据事件类型订阅 -
Otto
Square 的开源项目,基于 Guava 的 Android 优化
项目地址:https://github.com/square/otto
文档介绍:http://square.github.io/otto/
EventBus 与 Otto 的功能及性能对比文档
EventBus 与 Otto 性能对比 Demo Apk
-
Android-Universal-Image-Loader
图片缓存,目前使用最广泛的图片缓存,支持主流图片缓存的绝大多数特性。
项目地址:https://github.com/nostra13/Android-Universal-Image-Loader
原理剖析文档:Android-Universal-Image-Loader
Demo 地址:https://github.com/Trinea/TrineaDownload/blob/master/universal-imageloader-demo.apk?raw=true
文档介绍:http://www.intexsoft.com/blog/item/74-universal-image-loader-part-3.html -
picasso
square 开源的图片缓存
项目地址:https://github.com/square/picasso
文档介绍:http://square.github.io/picasso/
特点:(1)可以自动检测 adapter 的重用并取消之前的下载
(2)图片变换
(3)可以加载本地资源
(4)可以设置占位资源
(5)支持 debug 模式
-
fresco
一款强大的图片缓存工具,由 Facebook 开发
项目地址:https://github.com/facebook/fresco
文档介绍:http://frescolib.org/
特点:(1) 两个内存缓存加上磁盘缓存构成了三级缓存
(2) 支持流式,可以类似网页上模糊渐进式显示图片
(3) 对多帧动画图片支持更好,如 Gif、WebP
(4) 更多样的显示,如圆角、进度条、点击重试、自定义对焦点
(5) 更多样的加载,如支持 EXIF、全面支持 WebP
(6) 支持 Android 2.3+ -
Glide
Glide 是一个 android 平台上的快速和高效的开源的多媒体资源管理库,提供 多媒体文件的压缩,内存和磁盘缓存, 资源池的接口。
它可以最大性能地在 Android 设备上读取、解码、显示图片和视频。Glide 可以将远程的图片、视频、动画图片等缓存在设备本地便于提高用户浏览图片的流畅体验。
项目地址:https://github.com/bumptech/glide
特点:
(1) GIF 动画的解码
(2) 本地视频剧照的解码
(3) 支持缩略图
(4) Activity 生命周期的集成
(5) 转码的支持
(6) 动画的支持
(7) OkHttp 和 Volley 的支持
-
butterknife
利用 annotation 帮你快速完成 View 的初始化,减少代码
项目地址:https://github.com/JakeWharton/butterknife
文档介绍:http://jakewharton.github.io/butterknife/ButterKnifeZelezny
用于快速生成ButterKnifeView 注入代码的 Android Studio/IDEA 插件
项目地址:https://github.com/inmite/android-butterknife-zelezny
-
Dagger
依赖注入,适用于 Android 和 Java
项目地址:https://github.com/square/dagger
原理剖析文档:Dagger
文档介绍:http://square.github.io/dagger/
对RxJava在Android上的扩展,使得Android上也很容易实现reactive components,简化线程操作,从而写出很漂亮的代码。
项目地址: https://github.com/ReactiveX/RxAndroid
文档介绍: 给Android 开发者的 RxJava 详解
是一款 Android 与 iOS 平台上的全能多媒体开发框架
项目地址: https://github.com/yixia/VitamioBundle
网站介绍: http://www.vitamio.org/docs/
特点:(1) 全面支持硬件解码与 GPU 渲染
(2) 能够流畅播放 720P 甚至 1080P 高清 MKV,FLV,MP4,MOV,TS,RMVB 等常见格式的视频
(3) 在 Android 与 iOS 上跨平台支持 MMS, RTSP, RTMP, HLS(m3u8)等常见的多种视频流媒体协议,包括点播与直播。
项目地址:https://github.com/Yalantis/uCrop
渠道打包工具
项目地址: https://github.com/umeng/umeng-muti-channel-build-tool
另可参见 Google 的构建系统 Gradle: http://tools.android.com/tech-docs/new-build-system/user-guide
根据 lint 的提示删除项目中无用的资源,减少包的大小
项目地址: https://github.com/KeepSafe/android-resource-remover
完整的 Android Fragment/Activity 生命周期图
项目地址: https://github.com/xxv/android-lifecycle