使用Kotlin高效地开发Android App,附学习视频

640?wx_fmt=gif

热文导读 | 点击标题阅读

如何进阶成为Java和Android架构师?

让你成为大牛的31 个 Android 开发神器

2018 之后,Android 工程师将何去何从?

作者:Tony沈哲  (文末附学习视频)
链接:https://juejin.im/post/5ade9ce3f265da0b80705e22


背景

最近我们在做区块链相关的钱包项目,新的App使用全新的技术栈。在Android中我们使用Kotlin+RxJava+Android Architecture Components,在iOS中使用Swift+RxSwift。本文不讨论App的架构,只讨论项目中所使用到的Kotlin的特性。

在Android的App中,可以毫不夸张地说,我们95%以上的代码使用了Kotlin开发的。由此,很有必要对这一阶段使用Kotlin做一个简单的小结。

使用的Kotlin特性:

一.扩展函数

Kotlin允许开发者在不改变已有类的情况下,为某个类添加新的函数。这个特性叫做扩展函数。

举一个简单的例子。如果要关闭一个I/O流,使用Java可能是写一个工具方法。

640?wx_fmt=png

对Kotlin而言,可以对Closeable扩展一个函数closeQuietly()。

640?wx_fmt=png


之后,任何实现了Closeable接口的类,都可以使用它本身的closeQuietly()方法来关闭流。我们不再需要那个工具方法了。

在项目中,我们使用扩展函数对Glide做了封装,大大简化了Glide的使用。

640?wx_fmt=png

640?wx_fmt=png

除此之外,我们还很多地方都用到了扩展函数。

我顺便更新了我的Kolin的工具类库,它包括各种utils和各种extension https://github.com/fengzhizi715/SAF-Kotlin-Utils

二.尾随闭包

一开始我并不了解这个概念。偶然间我看到我们的小伙伴在使用RxBus时,写下了这样的代码:

640?wx_fmt=png


当时我感觉很疑惑,因为RxBus是我写的,记得没有提供这样的方法啊。点击register()方法进去看之后,发现register是这样的:

640?wx_fmt=png

由于使用了Kotlin,该register方法的使用可以简化成这样:

640?wx_fmt=png


由于register()最后一个参数是一个方法或者说是一个闭包,可以把方法或者闭包提到最外面。变成项目中看到的样子:

640?wx_fmt=png

这就是尾随闭包,可以让代码看起来更加简洁。

三.with的用法

with是将某个对象作为函数的参数,在函数块内可以通过 this 指代该对象。在函数块内可以直接调用对象的方法或者属性。

640?wx_fmt=png

在使用with之前的某个Adapter

640?wx_fmt=png

使用with之后,该函数块可以省略"content."

640?wx_fmt=png


四.其他

这部分的内容并不是Kotlin的特性,是我使用Kotlin开发的工具。比如日志框架L以及Retrofit的日志拦截器。这些库,其实很早就开发了,最近稍微升级了一下功能。

L的github地址: https://github.com/fengzhizi715/SAF-Kotlin-log

Retrofit日志拦截器的github地址: https://github.com/fengzhizi715/saf-logginginterceptor

日志拦截器的效果图:


640?wx_fmt=other



640?wx_fmt=other


总结

Kotlin吸收了多种语言的优点,相对于Java有很多激动人心的特性,极大地提高了开发效率。本文介绍的特性也只是沧海一粟。接下来,我会整理更多项目中所使用的Kotlin特性。

BTW,我在写这篇文章的时候国内第一个钱包版本刚刚做完,开始第一轮测试。

更深入具体的学习请点击如下海报中的二维码,我已加入学习了~

640?wx_fmt=jpeg

加入学习后,更多该系列的相关文章:

使用Kotlin高效地开发Android App(五)完结篇

使用Kotlin高效地开发Android App(四)

使用Kotlin高效地开发Android App(三)

使用Kotlin高效地开发Android App(二)

你有好的文章想和大家分享欢迎投稿,直接向我投递文章链接即可


最后,欢迎大家加入我们的知识星球,这期是到2019年3月10日结束,所以越早加入越好,现在加入的球友快1000人了,到1000人时将大幅提价(还有最后几十个名额了),所以快上车!

640?wx_fmt=jpeg

微信扫描或者点击上方二维码领取Android\Python\AI\Java等高级进阶资源

更多学习资料点击下面的“阅读原文”获取

640?wx_fmt=gif

猜你喜欢

转载自blog.csdn.net/xj032w2j4ccjhow8s8/article/details/80994017