11.25 聽說,谷歌新歡來啦!使用 Kotlin 構建 Android 應用

第一次看文章的朋友可以關注我的專欄,會不定期發佈Android面試內容、進階專題等等。

簡介:

五月份 Google I/O 上,谷歌正式向全球宣佈 Kotlin-first 的這一重要理念,Kotlin 將成為 Android 開發者的首選語言。
讓我們記住一句話“落後就要捱打”,現在我們來了解學習一下

瞭解 Kotlin ,以及使用它的優勢

Kotlin 是一種現代的靜態設置類型編程語言,可以提高開發者的工作效率,並提升開發者的工作愉悅度。

優勢 1: 可與 Java 互操作

與 Android SDK 和 Java 程序語言庫兼容,Kotlin 代碼中可以方便調用 Java 庫 (Android Studio 的 Lint 檢查亦能與 Kotlin 代碼互操作)。

  • Kotlin 互操作指南https://developer.android.google.cn/kotlin/interop

優勢 2: 與 IDE 工具兼容

Kotlin 語言由 IntelliJ 的開發團隊設計,可與 IntelliJ (以及 Android Studio) 完美搭配使用,Android Studio 為 Kotlin 提供了一流的支持,比如,可通過內置工具來將 Java 代碼轉換成 Kotlin 代碼。或者藉助 “Show Kotlin Bytecode” 工具,可以在學習 Kotlin 時查看等效的 Java 代碼。

優勢 3: 空安全檢測默認情況下,Kotlin 可避免空指針異常發生。而且可以在開發時而不是運行時發現和避免錯誤。

fun foo(p: int) { ... }

△ 上面兩個例子都會觸發編譯器報錯,

從而避免了在運行時出現崩潰

優勢 4: 更簡潔的代碼****Kotlin 有著更簡潔明瞭的語法,可減少樣板代碼的使用。

// Java 語言類代碼

比如上例中的數據類代碼,有字段以及對應的 getter 和 setter 方法,雖然都是常規內容,但不免繁瑣,而且大量的樣本代碼也會佔用開發者的精力。我們來看看同樣的類用 Kotlin 如何編寫:

// Kotlin 語言,同樣的類代碼

Kotlin 還支持擴展方法,可以給現有的類附加新的方法 (而不需要修改類的原始代碼)。比如我們想計算字符串內某個字符出現的次數,通常我們這麼做:

// 定義方法

有了擴展方法,我們可以直接把 howMany 這個方法添加至 String 類:

// 擴展方法

如此一來,我們就直接 “問” string “你裡面有幾個‘e’字符” 就可以了,這更簡潔、自然,可讀性也大幅提升。Kotlin 還支持指定/默認參數,這讓開發者在編寫方法時,不需要為不同參數的版本另寫一個方法,而是直接在同一個方法裡,通過 “?” 標出可空參數,通過 “=” 給出參數的默認值即可。

// View.java

△ 使用 Kotlin 僅需要定義一個構造函數即可

優勢 5: 語言特性帶來的進階功能

Kotlin 也在持續為開發者帶來更多高級的語言特性,協程就是一個突出的例子。

Kotlin 裡的協程可以理解為從語言級別實現了異步或非阻塞編程,並在 Kotlin 1.3 中開始提供,在 Android 上使用協程可以避免下面的問題:

  • 通過主 (界面) 線程進行調用時可以確保安全 (比如在主線程中異步訪問數據庫)
  • 避免在主線程上運行耗時較長的任務 (如圖像或網絡操作) 時發生阻塞

比如下面這個例子,使用協程時不會對主線程造成阻塞,並可提高可讀性:

// 使用回調

使用 Kotlin 構建 Android 應用

聽說,谷歌新歡來啦!使用 Kotlin 構建 Android 應用

△ Kotlin 推進的時間表

使用 Kotlin 更快速地編寫更棒的 Android 應用,自兩年前 Android 平臺開始支持使用 Kotlin 語言後,谷歌一直在努力豐富使用 Kotlin 構建的體驗和開發效率的提升。谷歌為 Android 開發者提供了 Android KTX、Android Studio 的支持以及大量的學習資源等。

Android KTX

自從兩年前 Android 平臺開始支持 Kotlin 後,谷歌一直在努力解決 Kotlin 的兼容性問題並豐富其功能,更進一步為大家帶來了許多工具來進一步提高開發效率,比如 Android KTX。它是一組適用於 Android 開發的 Kotlin 擴展功能,對多種常用的 Android 開發流程提供簡化的封裝 API。

適用於動畫、圖形、文本等諸多領域。下面來看幾個例子:

KTX: 動畫

AnimatorKt 能讓開發者在動畫的各個階段執行自己的操作。比如以前需要在動畫結束時執行操作需要這麼做:

// Animator API

而在 AnimatorKt 裡,只需使用 doOnEnd 即可,代碼被精簡成了一行:

// AnimatorKt

大家可以參看如下代碼瞭解 AnimatorKt 是如何幫大家精簡代碼的:

inline fun Animator.doOnEnd(crossinline action: (animator: Animator) -> Unit) =

KTX: Drawables 轉化為位圖

將可繪製對象轉化為位圖是不少開發者在處理 UI 時的常用操作,在以前需要如此操作:

// 位圖 API

但如果使用 DrawableKt,只需要如下操作即可,應用代碼再次被壓縮成了一行:

// DrawableKt

DrawableKt 實際上是使用擴展方法,將開發者需要做的操作封裝了起來,從而節省了大量重複工作的時間:

fun Drawable.toBitmap(

Kotlin x Jetpack

在推薦開發者使用 Kotlin 構建應用的同時,Android 團隊自己也在大規模的使用 Kotlin,比如下面要跟大家介紹的在 Jetpack 庫中的 Kotlin 特性的使用:

Jetpack 與協程

在 Jetpack 的下述組件庫裡使用了協程的特性:

  • Room: suspend 函數
  • WorkManager: CoroutineWorker
  • Lifecycles: 協程作用域 (coroutine scope)
  • ViewModel: 協程作用域
  • LiveData: 協程構建器 (coroutine builder)

Jetpack Compose

聽說,谷歌新歡來啦!使用 Kotlin 構建 Android 應用


在上週舉辦的 Android Dev Summit 2019 大會上,谷歌發佈了 Jetpack Compose 的開發者預覽版。Jetpack Compose 可以幫助開發者簡化並加速 Android 上的 UI 開發——使用更少的代碼、強大的工具和非常直觀的 Kotlin API,使您的應用栩栩如生。

聽說,谷歌新歡來啦!使用 Kotlin 構建 Android 應用


i

學習

看到這裡,你瞭解了嗎?關注支持一下


想要學習的朋友可以【私信】我【安卓】詳細瞭解哦

聽說,谷歌新歡來啦!使用 Kotlin 構建 Android 應用


分享到:


相關文章: