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

@author ASCE1885的 Github 简书 微博 CSDN 知乎

本文由于潜在的商业目的,不开放全文转载许可,谢谢!

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

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

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

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

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

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

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

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

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

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

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

前面我们提到过 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 前端移动开发领域高质量文章,主要包括业界最新动态,前沿技术趋势,开源函数库与工具等。

时间: 2024-10-25 14:19:40

在 2016 年学 Android 是一种什么样的体验?的相关文章

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

原文 译者:方应杭 来源:https://www.v2ex.com/t/310767?f=tt&utm_medium=hao.caibaojian.com&utm_source=hao.caibaojian.com 嘿,我最近接到一个 Web 项目,不过老实说,我这两年没怎么接触 Web 编程,听说 Web 技术已经发生了一些变化.听说你是这里对新技术最了解的 Web 开发工程师? 准确地说,我是一名「前端工程师」.不过你算是找对人了.我对今年的技术别提多熟了,前端可视化.音乐播放器.能踢

处女男学Android(十一)---Gallery、ViewPager和ViewPager+Fragment实现的Tab导航

一.前言 有阵子没更新博客了,主要是最近公司接了个P2P的金融借贷项目没人做,被拉去写服务端,所以迟迟没时间继续学习大安卓,想了想自己的安卓水平和公司的专业安卓璟博比起来依旧差距挺大,于是乎我要加把劲赶上才行,所以继续翻开李刚疯狂讲义系列,看到Gallery这个控件了,大致功能是横向滚动查看列表项,再仔细看了一下居然过时了,官方推荐用ViewPager来替代,还没学就过时了,有点不爽,干脆新的旧的一起学习一下,也好进行一下比较吧.废话不多说,首先是已经过时的Gallery. 二.画廊视图Gall

从零开始学android<android事件的处理方式.二十四.>

在android中一共有 多种事件,每种事件都有自己相对应的处理机制 如以下几种 1 单击事件 View.OnClickListener public abstract void onClick (View v) 单击组件时触发 2 单击事件 View.OnLongClickListener public abstract boolean onLongClick (View v) 长按组件时触发 3 键盘事件 View.OnKeyListener public abstract boolean

从零开始学android<数据存储(1)SharedPreferences属性文件.三十五.>

在android中有五种保存数据的方法,分别是: Shared Preferences Store private primitive data in key-value pairs. 对应属性的键值对属性文件存储 Internal Storage Store private data on the device memory. 设备内存存储 External Storage Store public data on the shared external storage. 外部存储器存储,如内

从零开始学android<RatingBar评分组件.二十三.>

如果现在用户要对某个应用程序打分往往会使用图所示的组件,通过选择的"五角星"的个数来决定最终的打分成绩 这样的功能在Android之中,可以使用RatingBar组件实现,使用此组件可以方便用户的输入,而且很直观,RatingBar类的定义结构如下: java.lang.Object ? android.view.View ? android.widget.ProgressBar ? android.widget.AbsSeekBar ? android.widget.RatingBa

刚学Android遇到的问题,findViewById值为null(新版本),老鸟欢迎你的指正

环境交代: 刚学Android,在官网下载的新版的ADT 以及新版的SDK 在新版的IDE(ADT)创建项目时如果你的最小版本(minimum required SDK)要支持4.0以下版,并且目标版本为(4.0+).那么此时IDE会为你创建一个兼容包 (appcompat_v7)如下图, 创建发短信项目后就会有如下的项目目录结构 这个时候在生成的项目主Activity不是以前的那种继承的Activity,而是继承的ActionBarActivity,我把发短信的界面创建起.界面效果如下.点此时

想学android进来看看吧~ ~

我深知学校里面有很多同学想学习新的知识,而苦于没有指导.其实我想说的是,很多东西需要靠自己,需要借助度娘,谷歌的.当然有人指导是最好的了.对于刚接触android是不是也想做出像下面的效果: 这是我花了几天写的界面布局,很多也是通过网络学习的.至于功能是控制家电的.看了评论的朋友要么就是要源码之类的,其实看源码确实是一种很快提高自己一种方式.但我绝对无论你开发什么,对你所在的平台的相关特性的了解是很重要的一步,就android来说,我个人觉得首先要理解android的线程机制,其中包括了消息机制

学Android开发 这19个开发工具助你顺风顺水

学Android开发 这19个开发工具助你顺风顺水 要想快速开发一个Android应用,通常会用到很多工具,巧妙利用这些工具,能让我们的开发工作事半功倍,节省大量时间,下面大连Android开发培训小编就为大家介绍下这19个开发工具都有神马用途. 1.XAppDbg XAppDbg是一个可以在运行中改变代码中参数的一个应用开发工具.这个工具可以为你省下大量的时间,因为你不用为应用的每次小改变而重新编译运行你的程序. 2.ChkBugReport 这个工具可以快速地检查输出的Android错误报告

从零开始学android<ScrollView滚动视图.十八.>

由于手机屏幕的高度有限,所以如果面对组件要显示多组信息的时候,ScrollView视图(滚动视图)可以有效的安排这些组件,浏览时可以自动的进行滚屏的操作. android.widget.ScrollView类继承结构如下所示: java.lang.Object ? android.view.View ? android.view.ViewGroup ? android.widget.FrameLayout ? android.widget.ScrollView ScrollView的特点: Sc