#記事を移動しました。
https://zenn.dev/dd_sho/articles/222cd0cdf75c4b
今後は上記の記事で更新します。(2021/10/03)
Androidアプリにおけるデータの保存と共有についてのまとめ。
- 内部ストレージ(アプリPrivateなfileの保存領域)
- 外部ストレージ(SDカードなどの共有されたfileの保存領域)
- SharedPreferences(アプリPrivateなdataの保存領域)
- データベース(アプリPrivateな構造を持つdataの保存領域)
他のアプリとの共有
Except for some types of files on external storage, all these options are intended for app-private data—the data is not naturally accessible to other apps.
If you want to share files with other apps, you should use the FileProvider API.
他のアプリとファイルを共有したい場合は、FileProvider
を使う
If you want to expose your app's data to other apps, you can use a ContentProvider.
他のアプリとデータを共有したい場合は、ContentProvider
を使う
内部ストレージ
- 他のアプリからはアクセスできない
- アプリ固有のデータを保存するのに適する
- Androidシステムがアプリ毎に固有のdirectoryを用意する
- アプリを削除すると内部ストレージ内のデータも削除される
- アプリを削除してもデータを残したい場合は
MediaStore
に保存する
内部ストレージの保存方法
https://developer.android.com/training/data-storage/files.html#WriteInternalStorage
内部キャッシュ
- 一時的なデータの保管に使う
- 内部ストレージの容量が少なくなるとAndroidシステムが削除するため、多くても1MBまでに留める
内部キャッシュの保存方法
https://developer.android.com/training/data-storage/files.html#WriteCacheFileInternal
外部ストレージ
- 他のアプリと共有したいデータの保存に使う(スクショやDLしたファイル等)
- アプリを削除しても保存される
- 常にアクセス可能とは限らない。SDカードなどがないと不可。
- 事前にアクセスできるか確認する必要がある。
外部ストレージの保存方法
https://developer.android.com/training/data-storage/files.html#WriteExternalStorage
SharedPreferences
- データの規模が小さくて構造的なデータではないデータを保存するのに適する
- 構造的なデータではない?→
Boolean
、Float
、Int
、Long
、String
- 取得と更新ができる
- key-value形式で記述されたxmlファイルとしてアプリ内に保存される
- SharedPreferencesのインスタンス生成時にxmlファイルの名前を任意に設定できる
- アプリを削除するとデータも削除される
- アプリ全体で共有されるSharedPreferencesとActivityに紐づくSharedPreferencesがある
SharedPreferencesの保存方法
https://developer.android.com/training/data-storage/shared-preferences.html
アプリ内データベース
- AndroidではSQLite Databaseがサポートされている
- SQLiteで直接操作することもできるが、よりSQLiteが使いやすくなる**
Room
**というライブラリが用意されている
Roomの使い方(Google推奨)
https://developer.android.com/training/data-storage/room/index.html
SQLiteで直接操作する方法
https://developer.android.com/training/data-storage/sqlite.html
今回は以上です。