Jetpack系列:喜新厌旧的程序员~KTX篇

 

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操作的APIfragment-ktx//提供与调色板工作习惯Kotlin支持palette-ktx//提供数据库事务包装功能,消除样板代码sqlite-ktx//包含ArrayMap,LongParseArray,LruCache等//利用Kotlin运算符重载来简化诸如集合连接之类的功能collection-ktx//提供viewmodel功能支持lifecycle-viewmodel-ktx//提供可观察流支持lifecycle-reactivestreams-ktx//提供导航功能支持navigation-runtime-ktxnavigation-fragment-ktxnavigation-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语言已经是大势所趋,在这个技术日新月异的时代,做到“喜新厌旧”,紧跟新技术发展潮流,才能不被时代所淘汰。努力,共勉!

这里有更多科技资讯,新技术学习,关注我们,和我们一起成长!

Published by

风君子

独自遨游何稽首 揭天掀地慰生平