Android KTX 是包含在 Android Jetpack 及其他 Android 庫中的一組 Kotlin 擴展程序眉枕。KTX 擴展程序可以為 Jetpack浓瞪、Android 平臺及其他 API 提供簡潔的慣用 Kotlin 代碼斤葱。為此,這些擴展程序利用了多種 Kotlin 語言功能,其中包括:
- 擴展函數(shù)
- 擴展屬性
- Lambda
- 命名參數(shù)
- 參數(shù)默認值
- 協(xié)程
AndroidX 模塊
Android KTX 分為若干模塊蝌矛,每個模塊包含一個或多個軟件包菲驴。
Android KTX 包含一個核心模塊荐吵,該模塊可為通用框架 API 提供 Kotlin 擴展程序,而且還能提供一些領域?qū)S玫臄U展程序赊瞬。
除了核心模塊之外先煎,所有 KTX 模塊工件都會替換 build.gradle
文件中的底層 Java 依賴項。例如森逮,您可以將 androidx.fragment:fragment
依賴項替換為 androidx.fragment:fragment-ktx
榨婆。此語法有助于更好地管理版本控制,而不會增加額外的依賴項聲明要求褒侧。
1良风、Core KTX
Core KTX 模塊為屬于 Android 框架的通用庫提供擴展程序。這些庫沒有您需要添加到 build.gradle 的基于 Java 的依賴項闷供。
要使用此模塊烟央,請將以下內(nèi)容添加到應用的 build.gradle 文件中:
dependencies {
implementation "androidx.core:core-ktx:1.3.1"
}
2、Collection KTX
Collection 擴展程序包含在 Android 的節(jié)省內(nèi)存的集合庫中使用的效用函數(shù)歪脏,包括 ArrayMap疑俭、LongParseArray、LruCache 等等婿失。
要使用此模塊钞艇,請將以下內(nèi)容添加到應用的 build.gradle 文件中:
dependencies {
implementation "androidx.collection:collection-ktx:1.1.0"
}
3、Fragment KTX
Fragment KTX 模塊提供了一系列擴展程序以簡化 Fragment API豪硅。
要使用此模塊哩照,請將以下內(nèi)容添加到應用的 build.gradle
文件中:
dependencies {
implementation "androidx.fragment:fragment-ktx:1.2.5"
}
4、 Lifecycle KTX
Lifecycle KTX 為每個 Lifecycle
對象定義一個 LifecycleScope
懒浮。在此范圍內(nèi)啟動的協(xié)程會在 Lifecycle
被銷毀時取消飘弧。您可以使用 lifecycle.coroutineScope
或 lifecycleOwner.lifecycleScope
屬性訪問 Lifecycle
的 CoroutineScope
。
要使用此模塊,請將以下內(nèi)容添加到應用的 build.gradle
文件中:
dependencies {
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0"
}
5次伶、LiveData KTX
使用 LiveData 時痴昧,您可能需要異步計算值。例如冠王,您可能需要檢索用戶的偏好設置并將其傳送給界面赶撰。在這些情況下,LiveData KTX 可提供一個 liveData 構建器函數(shù)版确,該函數(shù)會調(diào)用 suspend 函數(shù)扣囊,并將結果作為 LiveData 對象傳送。
要使用此模塊绒疗,請將以下內(nèi)容添加到應用的 build.gradle 文件中:
dependencies {
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0"
}
6侵歇、Navigation KTX
Navigation 庫的每個組件都有自己的 KTX 版本,用于調(diào)整 API 以使其更簡潔且更符合 Kotlin 的語言習慣吓蘑。
要添加這些模塊惕虑,請將以下內(nèi)容添加到應用的 build.gradle 文件中:
dependencies {
implementation "androidx.navigation:navigation-runtime-ktx:2.3.0"
implementation "androidx.navigation:navigation-fragment-ktx:2.3.0"
implementation "androidx.navigation:navigation-ui-ktx:2.3.0"
}
7、Palette KTX
Palette KTX 模塊為使用調(diào)色板提供慣用的 Kotlin 支持磨镶。
要使用此模塊溃蔫,請將以下內(nèi)容添加到應用的 build.gradle
文件中:
dependencies {
implementation "androidx.palette:palette-ktx:1.0.0"
}
8、Reactive Streams KTX
利用 Reactive Streams KTX 模塊可根據(jù) ReactiveStreams 發(fā)布程序來創(chuàng)建可監(jiān)測的 LiveData 流琳猫。
要使用此模塊伟叛,請將以下內(nèi)容添加到應用的 build.gradle 文件中:
dependencies {
implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:2.2.0"
}
9、Room KTX
Room 擴展程序增加了對數(shù)據(jù)庫事務的協(xié)程支持脐嫂。
要使用此模塊统刮,請將以下內(nèi)容添加到應用的 build.gradle 文件中:
dependencies {
implementation "androidx.room:room-ktx:2.2.5"
}
10、SQLite KTX
SQLite 擴展程序?qū)⑴c SQL 相關的代碼封裝在事務中账千,從而避免編寫大量樣板代碼侥蒙。
要使用此模塊,請將以下內(nèi)容添加到應用的 build.gradle 文件中:
dependencies {
implementation "androidx.sqlite:sqlite-ktx:2.1.0"
}
11匀奏、 ViewModel KTX
ViewModel KTX 庫提供了一個 viewModelScope()
函數(shù)鞭衩,可讓您更輕松地從 ViewModel
啟動協(xié)程。CoroutineScope
綁定至 Dispatchers.Main
娃善,并且會在清除 ViewModel
后自動取消论衍。您可以使用 viewModelScope()
,而無需為每個 ViewModel
創(chuàng)建一個新范圍聚磺。
要使用此模塊饲齐,請將以下內(nèi)容添加到應用的 build.gradle
文件中:
dependencies {
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
}
12、WorkManager KTX
WorkManager KTX 為協(xié)程提供一流的支持咧最。
要使用此模塊,請將以下內(nèi)容添加到應用的 build.gradle 文件中:
dependencies {
implementation "androidx.work:work-runtime-ktx:2.4.0"
}
13、Play Core KTX
Play Core KTX 通過向 Play Core 庫中的 SplitInstallManager 和 AppUpdateManager 添加擴展函數(shù)矢沿,針對單發(fā)請求和用于監(jiān)控狀態(tài)更新的 Flow 添加了對 Kotlin 協(xié)程的支持滥搭。
要使用此模塊,請將以下內(nèi)容添加到應用的 build.gradle 文件中:
dependencies {
implementation "com.google.android.play:core-ktx:1.8.0"
}
14捣鲸、SavedStateHandle的使用
build.gradle文件中配置
android {
dataBinding.enabled = true
...
}
dependencies {
implementation 'androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0'
}
15瑟匆、Room持久性庫的使用
build.gradle文件中配置
dependencies {
def room_version = "2.2.5"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor
// optional - Kotlin Extensions and Coroutines support for Room
implementation "androidx.room:room-ktx:$room_version"
// optional - RxJava support for Room
implementation "androidx.room:room-rxjava2:$room_version"
// optional - Guava support for Room, including Optional and ListenableFuture
implementation "androidx.room:room-guava:$room_version"
// Test helpers
testImplementation "androidx.room:room-testing:$room_version"
}
16、添加Navigation支持
build.gradle添加以下依賴項:
dependencies {
def nav_version = "2.3.0"
// Java language implementation
implementation "androidx.navigation:navigation-fragment:$nav_version"
implementation "androidx.navigation:navigation-ui:$nav_version"
// Kotlin
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
// Feature module Support
implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"
// Testing Navigation
androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"
}
17栽惶、添加分頁組件
build.gradle添加以下依賴項:
dependencies {
def paging_version = "2.1.2"
implementation "androidx.paging:paging-runtime:$paging_version" // For Kotlin use paging-runtime-ktx
// alternatively - without Android dependencies for testing
testImplementation "androidx.paging:paging-common:$paging_version" // For Kotlin use paging-common-ktx
// optional - RxJava support
implementation "androidx.paging:paging-rxjava2:$paging_version" // For Kotlin use paging-rxjava2-ktx
}
18愁溜、協(xié)程添加依賴
build.gradle添加以下依賴項:
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1'
19、RecyclerView的依賴項
如需添加RecyclerView的依賴項外厂,您必須將Google Maven代碼庫添加到項目中冕象。
在應用或模塊的build.gradle文件中添加所需工件的依賴項:
dependencies {
implementation "androidx.recyclerview:recyclerview:1.1.0"
// For control over item selection of both touch and mouse driven selection
implementation "androidx.recyclerview:recyclerview-selection:1.1.0-rc01"
}