Android Kotlin基礎講座 09.1:レポジトリー

概念:キャッシング(キャッシュ)とは

アプリがネットワークからデータを読み取った後、端末のストレージにデータを保存することで、データをキャッシュすることができます。後で端末がオフラインのときにデータにアクセスしたり、何度も同じデータにアクセスしたいときなどにキャッシュします。

以下の表はAndroidでネットワークキャッシングを実装する方法をいくつか示しています。構造化されたデータを端末のファイルシステムに保存するにはRoomの使用が推奨されているため、この記事ではRoomを使って実装していきます。

キャッシング手段使いどころ
Retrofitは型安全なRESTクライアントをAndroidに実装するために使われるネットワーキングライブラリです。ネットワークリザルトのコピーをローカルに保存するようにRetrofitを設定することができます。単純なリクエスト、レスポンス、まれなネットワーク呼び出しや比較的小さなデータセットに対しては有効な手段です。
キーと値のペアを保存するのにはSharedPreferencesを使うこともできます。キーと単純な値の少数のペアに対しては有効な手段です。大容量のデータに対しては用いることができません。
アプリの内部ストレージディレクトリにアクセスして、データファイルを保存することもできます。アプリのパッケージ名が内部ストレージディレクトリを示しており、Androidファイルシステムの独自のロケーションになります。このディレクトリはアプリのプライベートロケーションで、アプリがアンインストールされるとクリアされます。メディアファイルやデータファイルを保存して、自身で管理する必要がある場合など、ファイルシステムによって解決できるニーズに対しては有効な手段です。複雑な構造化されたデータに対しては用いることができません。
SQLiteの上に抽象レイヤーを提供しているSQLiteオブジェクトマッピングライブラリである、Roomを用いてデータをキャッシュすることができます。複雑な構造化されたデータに対して推奨される手段です。構造化されたデータを端末のファイルシステム上に保存する場所として最も適しているのは、ローカルのSQLiteデータベースです。