Android Room with a View - KotlinというCodelabをやってみた

Posted by kwmt27 on Sat, May 4, 2019

Android Room with a View - Kotlinというコードラボをやったときのメモです。

Room データベースとは

Room uses the DAO to issue queries to its database.

Roomはデータベースへのクエリを発行するためにDAOを使います。

By default, to avoid poor UI performance, Room doesn’t allow you to issue queries on the main thread. When Room queries return LiveData, the queries are automatically runasynchronously on a background thread.

https://codelabs.developers.google.com/codelabs/android-room-with-a-view-kotlin/#6

デフォルトではRoomはメインスレッドでクエリできません。 RoomがLiveDataを返すとき、クエリは自動的にバックグラウンドで非同期で実行さfれます。

Room provides compile-time checks of SQLite statements.

RoomはSQLiteステートメントをコンパイル時にチェックします。

Room データベースを実装するために

  • RoomDatabaseを継承
  • 継承したクラスはabstractでなければならない
  • 通常、Roomデータベースインスタンスはアプリ全体で1つだけ。

Repository

Repository implements the logic for deciding whether to fetch data from a network or use results cached in a local database.

Repositoryはネットワーク上からデータを取得するか、ローカルデータベースにあるキャッシュされたデータを使うかを決定するためのロジックを実装します。

Add a wrapper for the insert() method. You must call this on a non-UI thread or your app will crash. Room ensures that you don’t do any long-running operations on the main thread, blocking the UI.

insertメソッドは、UIスレッド上で呼んではいけません。でないとアプリはクラッシュします。 RoomはUIをブロックするメインスレッド上で長い時間の操作を行わないことを保証しています。

Add the @WorkerThread annotation, to mark that this method needs to be called from a non-UI thread. Add the suspend modifier to tell the compiler that this needs to be called from a coroutine or another suspending function.

@WorkerThreadアノテーションはnon-UIスレッド上で呼ぶ必要があります。 suspend修飾子は、コルーチンまたは他のsuspend関数から呼ばれる必要があることをコンパイラに伝えます。

リポジトリ

https://github.com/kwmt/RoomWordSample



comments powered by Disqus