Android KTX

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.coroutineScopelifecycleOwner.lifecycleScope 屬性訪問 LifecycleCoroutineScope

要使用此模塊,請將以下內(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"
    }
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市汁蝶,隨后出現(xiàn)的幾起案子渐扮,更是在濱河造成了極大的恐慌,老刑警劉巖掖棉,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件墓律,死亡現(xiàn)場離奇詭異,居然都是意外死亡幔亥,警方通過查閱死者的電腦和手機耻讽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來帕棉,“玉大人针肥,你說我怎么就攤上這事◇宰颍” “怎么了祖驱?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瞒窒。 經(jīng)常有香客問我捺僻,道長,這世上最難降的妖魔是什么崇裁? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任匕坯,我火速辦了婚禮,結果婚禮上拔稳,老公的妹妹穿的比我還像新娘葛峻。我一直安慰自己,他們只是感情好巴比,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布术奖。 她就那樣靜靜地躺著礁遵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪采记。 梳的紋絲不亂的頭發(fā)上佣耐,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機與錄音唧龄,去河邊找鬼兼砖。 笑死,一個胖子當著我的面吹牛既棺,可吹牛的內(nèi)容都是我干的讽挟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼丸冕,長吁一口氣:“原來是場噩夢啊……” “哼耽梅!你這毒婦竟也來了?” 一聲冷哼從身側響起晨仑,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤褐墅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后洪己,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妥凳,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年答捕,在試婚紗的時候發(fā)現(xiàn)自己被綠了逝钥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡拱镐,死狀恐怖艘款,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沃琅,我是刑警寧澤哗咆,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站益眉,受9級特大地震影響晌柬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜郭脂,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一年碘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧展鸡,春花似錦屿衅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涡尘。三九已至,卻和暖如春响迂,著一層夾襖步出監(jiān)牢的瞬間悟衩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工栓拜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人惠昔。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓幕与,卻偏偏與公主長得像,于是被迫代替她去往敵國和親镇防。 傳聞我的和親對象是個殘疾皇子啦鸣,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354