Android: JetpackのCoroutine Supportについて

Jetpackのいくつかのライブラリでは、Kotlin Coroutineのサポートが入っていますが、 どのライブラリで対応が進んでいるか気になったので、軽くまとめます。使い方については言及しません。

以下、2019年3月10日 2019年3月11日の調査結果になります。 また、これらは、supportライブラリのリポジトリから取ってきたので、現在リリースされているかどうかは不明です。

Lifecycle

// Lifecycleに従うCoroutineScopeの生成
val Lifecycle.coroutineScope: CoroutineScope

LifecycleOwner

// LifecycleOwnerに従うCoroutineScopeの生成
val LifecycleOwner.lifecycleScope: CoroutineScope

ViewModel

// ViewModelに従うCoroutineScopeの生成
val ViewModel.viewModelScope: CoroutineScope

WorkManager

abstract class CoroutineWorker(
  appContext: Context,
  params: WorkerParameters
) : ListenableWorker(appContext, params) {
  // suspendメソッドで定義された
  abstract suspend fun doWork(): Result
}

Room

// Dao内でsuspendメソッドが使える
@Dao
interface HogesDao {
  @Insert
  suspend fun add(hoge: Hoge)

  @Query("SELECT * FROM hoge WHERE id = :id")
  suspend fun get(id: String): Hoge

  ...
}

まとめ

結構対応がされていた😃😃😃

補足

Written by