在 2016 年学 Android 是一种什么样的体验?

在 2016 年学 Android 是一种什么样的体验?

@author ASCE1885的 Github 简书 微博 CSDN 知乎
本文因为潜在的商业目的,不开放全文转载许可,谢谢!html

white_beard.png-475.8kB

广而告之时间:个人新书《Android 高级进阶》(https://item.jd.com/108219759...在京东开始预售了,欢迎订购!前端

图片描述

转眼间 2016 年的电量已不足 20%,不由感慨 How Time Flies!不知不觉 Android 移动开发已经走过了八年的光阴,在这八年的时间中,Android 开发从最初的简单调用系统 API,到各种框架的不断涌现,再到现在的成熟阶段,那么做为一个想在 2016 年开始学习 Android 或者从新开始学习 Android 的开发者来讲,你将看到一幅什么样的光景呢?android

首先你会发现最新的 Android 系统版本已是 7.0,做为大版本确定存在不少变化和改进,开发者须要持续跟进这些变化,例如 Android 7.0 删除了三个隐式广播,优化内存使用和优化电量消耗。再往前一个版本,Android 6.0 从新设计了权限系统,一系列的权限再也不简单的在 AndroidManifest.xml 文件中声明就可使用,而是要动态申请。再往前一个版本,Android 5.0 引入了 Material Design,今后 Android 有了本身特有的设计语言和规范。git

image_1avj9nk461qdajmb17c315fm9bm29.png-172.7kB

从集成开发环境和构建工具上面看,一两年前还在苟延残喘的 eclipse+ant 基本绝迹了,取而代之的是流行的 Android Studio +Gradle,截至本文发稿前,Android Studio 刚刚发布了 2.2.2 版本,对应的 Gradle 版本为 2.14.1 版本。谈到 Android 的构建,除了 Gradle,你也能够尝试 Facebook 的 Buck,虽然它的配置侵入性很强,但构建速度是比 Gradle 快不少的,固然,若是使用最新的 Android Studio+Gradle,咱们能够开启 Instant Run 模式,从而达到快速的从新构建。github

image_1avj8ih4oe1m1rjgqg41pqg19vn1f.png-184.5kB

著名的 Support Library 已经更新到 25.0.0,其中 support-v4 库从 24.2.0 版本开始就拆分红 5 个子库,开发者能够更灵活的引用它。数据库

image_1avj91p8i19betnn1ld42t01uc61s.png-88kB

什么?你还在使用 ListView,GridView?是时候使用 RecyclerView 进行替换了,同时别忘了使用 Support Library 24.2.0 开始引入的 DiffUtil 来高效更新 RecyclerView。编程

从搭建应用的UI架构开始,咱们再也不考虑 MVC 模式,取而代之以 MVP 或者 MVVM 模式,Android 官方虽然对于 MVP 模式没有统一的标准,但仍是提供了一系列使用例子 供开发者做为实现参考。设计模式

image_1avj8ceqa6uc1ffr14fc1dgp10qg12.png-83.5kB

至于 MVVM 模式,Android 官方提供了一个名为 DataBinding 函数库做为标准实现,相信后面会愈来愈多开发者在项目中引入。缓存

若是你已经厌倦了使用 Java 来编写 Android 应用,没有关系,你能够尝试下 Kotlin,它能够比做 Android 世界的 Swift,目前已经发布了 1.0.4 版本,支持多种现代的编程特性,例如函数式编程。同时 100% 支持和 Java 的混合编程,具备 Java 编程基础的开发者很容易上手。微信

image_1avjccovrbrspjak8a1ajpr299.png-250kB

若是你也不喜欢 Kotlin,但熟悉 Javascript 语言,那么推荐你试用下今年很是火爆的 React Native,它不只可使用 Javascript 语言编写 Android 应用,并且能够编写 iOS 应用,并且代码复用高达 80% 左右,同时,新功能的上线再也不须要往应用市场提交新的 APK 包,而是支持在线热更新。固然,React Native 写出来的界面是 Native 的体验,不是 H5 的体验。

image_1avjddbak1obhc9nrd76tq1p0mm.png-46.2kB

提起 React Native,咱们不得不提到它的竞争者 Weex,Weex 的基本原理和 React Native 一致,也是使用 Javascript 语言编写 Android 和 iOS 应用,不一样的是,React Native 是基于 React 框架,Weex 是基于 Vue 框架。固然,目前看来,React Native 的势头是盖过 Weex 的。

image_1avji66pflkivkj1sr8rvg1v0m9.png-258.8kB

前面咱们提到过 Kotlin 支持函数式编程,个人意思固然不是说使用 Java 语言就不能支持函数式的开发,可是就目前 Android 支持的 Java 版本,要支持函数式编程咱们须要引入一个知名的函数库 RxJava,这是一个函数响应式编程框架,采用观察者设计模式,最直观的,它能让你的代码避免回调地狱的出现,使得代码数据流向很是清晰,在 Android 中使用 RxJava,还须要引入 RxAndroid 做为桥接,固然,还存在 RxBus,RxBinding 等等扩展函数库。

提及这两年 Android 开发的变化,你会发现热修复框架的如春笋般涌现,你以前可能知道 Dexposed,AndFix,Nuwa 等,但最近几个月出现的新美大 Robust,微信的 Tinker,手机 QQ 的 QFix 等方案你是否了解和对比过?

咱们知道热修复是用来在线修复严重性的 bug,那么 Android Native 代码如何实现功能模块的在线更新呢?这就须要涉及插件化框架的概念了。Android 平台的插件化框架也是存在多种方案,各有优劣。常见的携程的 DynamicAPK,360 的 DroidPlugin,iReader 的 ZeusPlugin 以及 Small 等。另外,插件化也是解决 64K 问题的一大利器。

另一个和热修复容易混淆的概念是应用的增量更新,增量更新的意思是应用在自动更新时下载的 APK 不是全量的,而是一个差分包,下载完成合并后再进行安装,能够看到,热修复和增量更新最大的区别是应用更新后是否须要从新安装。

上面说到的热修复,插件化更新,增量更新,都依赖于应用启动后去服务端下载对应的更新包,那么若是应用启动时去读取本地缓存或者数据库等数据,因为文件损坏或者数据格式不正确,可能会致使应用启动必然闪退,所以,咱们还须要引入启动保护机制来清除缓存数据从而保证应用能够正常启动。

对了,应用底层基础函数库也发生了很大变化,网络通讯库 android-async-http 已再也不是流行,OkHttp+Retrofit 是主流的选择,图片加载和缓存框架 Android-Universal-Image-Loader 也已经落伍了,Glide,Fresco 等是更优的选择。其余流行的底层函数库还有依赖注入框架 Dagger2,事件总线框架 EventBus,数据库 ORM 框架 greenDAO,就连日志记录函数库也涌现了很多,其中以 Timber,Hugo,logger 最有表明性。

2017 年还将会有哪些新技术或者新的变化出现呢?让咱们拭目以待吧!

欢迎关注个人微信公众号 ASCE1885,专一与原创或者分享 Android,iOS,ReactNative,Web 前端移动开发领域高质量文章,主要包括业界最新动态,前沿技术趋势,开源函数库与工具等。

相关文章
相关标签/搜索