Android Kotlin基礎講座 06.2: コルーチンとRoom
目次
まとめ
- UIアーキテクチャをセットアップするためにはViewModel、ViewModelFactory、データバインディングを用います。
- UIの動作をスムーズに保つためには、データベース操作のようなロングランニングタスクにはコルーチンを使います。
- コルーチンは非同期でノンブロッキングです。非同期的なコードをシーケンシャルにするためにはsuspend関数を使います。
- コルーチンがsuspendでマークされた関数を呼び出す際、通常の関数の呼び出しのように、関数が結果を返すまでブロッキングする代わりに、コルーチンは結果の準備ができるまで処理を一時停止させます。
- ブロッキングと一時停止の違いは、スレッドがブロックされた場合、他の処理は起こらないのに対して、スレッドが一時停止された場合、他の処理は結果が返ってくるまで続行されるということです。
データベース操作のトリガーとなるクリックハンドラーをを実装するためには、以下のパターンに従います。
- 結果がUIに影響を与えるため、メインスレッド、またはUIスレッドで実行されるコルーチンを開始させます。
- ロングランニングタスクを実行するためにsuspend関数を呼び出し、結果を待機する間、UIスレッドをブロックしないようにします。
- ロングランニングタスクはUIと関係がないため、I/Oコンテクストに切り替えます。そうすることで、処理に最適化されたスレッドプールで処理が実行されます。
- その後、ロングランニング関数を呼び出します。
LiveDataオブジェクトが変化する度に、そのオブジェクトからstringを生成するためには、Transofrmation.mapを使います。
お疲れさまでした。次の講座は 6.3 Livedataを使ってボタンの状態をコントロールするです。
おすすめ書籍
Kotlinの文法をまず学びたい!という方には以下の書籍がおすすめです。Kotlinは日本語書籍がまだ豊富とは言えない状況ですが、細かく解説されており、Kotlin入門者のかたでもつまずくことなく学習できると思います。
[itemlink post_id=”1743″]実際にアプリを作りながら覚えていきたい!という方には以下もお勧めです。はじめに上の書籍で文法をさらっと学んでから取り組むのがお勧めです。
[itemlink post_id=”1745″]