Kotlin,是一种OSS静态类型的编程语言,主要针对JVM,Android,JavaScript和Native,由JetBrains开发,属于开源项目,第一个官方1.0版本于2016年2月发布。当前最新发布的版本是1.3.50, 于2019年8月22日发布。
关于Kotlin语言的使用说明,大家可以在Kotlin官方说明文档中学习:
https://kotlinlang.org/docs/reference/basic-syntax.html
今天我们简单介绍下Kotlin语言在Android中的应用。
Jetpack提供Android KTX组件,它是一组Kotlin的扩展,这些扩展利用了Kotlin语言的几种功能:
-
扩展功能
-
扩展属性
-
Lambda表达式
-
命名参数
-
参数默认值
Android KTX组件如下几个包:
//提供通用框架API的Kotlin扩展以及多个特定域的扩展
core-ktx
//提供了简化fragment操作的API
fragment-ktx
//提供与调色板工作习惯Kotlin支持
palette-ktx
//提供数据库事务包装功能,消除样板代码
sqlite-ktx
//包含ArrayMap,LongParseArray,LruCache等
//利用Kotlin运算符重载来简化诸如集合连接之类的功能
collection-ktx
//提供viewmodel功能支持
lifecycle-viewmodel-ktx
//提供可观察流支持
lifecycle-reactivestreams-ktx
//提供导航功能支持
navigation-runtime-ktx
navigation-fragment-ktx
navigation-ui-ktx
//提供WorkManager功能支持
work-runtime-ktx
Android KTX组件,针对Android的功能适配做了很多内联函数的处理,例如针对SharedPreferences的写操作,使用Java、Kotlin与Android KTX三种方式实现,有着明显的区别:
Java写SharedPreferences:
sharedPref
.edit()
.putInt(getString(prefsKey), ((ObservableInt) sender).get());
.apply();
必须先创建一个编辑器,然后才能对首选项数据进行修改,完成编辑后,还必须执行apply或者commit来保存更改。
Kotlin写SharedPreferences:
sharedPref.edit().apply {
putInt(getString(prefsKey), (observable as ObservableInt).get())
commit()
}
其实现与Java实现基本一致,只是写法有区别而已。
KTX组件写SharedPreferences:
sharedPref.edit { putInt(getString(prefsKey), 0) }
//sharedPref.edit(commit = true) {putInt(getString(prefsKey), 1)}
可以看到代码明显精简,省去了commit和apply的显示调用,这是因为KTX执行edit时,包含了inline关键字,每次使用此函数时,编译器都将执行该函数的已编译字节码,避免了每次执行时创建editor对象实例化的开销。这种实现是Android KTX库提供的典型增强功能。
未指定commit属性或其为false时,其默认使用apply()方法进行异步提交;否则将使用commit()方法同步保存SharedPreference文件数据。
注意:
使用KTX功能时,需要导入对应的依赖包,本例使用了core-ktx包。
◆ ◆ ◆ ◆ ◆
到这里Android KTX的基本功能就介绍完了,如何在APP工程中导入KTX依赖包呢?
1. 增加google()资料库依赖
repositories {
google()
}
2. 导入使用ktx包
dependencies {
implementation 'androidx.core:core-ktx:1.0.1'
implementation 'androidx.fragment:fragment-ktx:1.2.0-alpha04'
}
Tips:小编使用的AS Kotlin插件版本为1.3.50,如果使用Kotlin功能有问题,请更新Kotlin插件
– END –
Android KTX组件的使用场景非常广泛,笔者只是使用core-ktx包做一个简单的示例,各位看官有兴趣可以尝试使用其他KTX组件包进行APP的功能开发。
Android开发使用Kotlin语言已经是大势所趋,在这个技术日新月异的时代,做到“喜新厌旧”,紧跟新技术发展潮流,才能不被时代所淘汰。努力,共勉!
这里有更多科技资讯,新技术学习,关注我们,和我们一起成长!