参考
公式見ながらピックアップ。
物理的な保存場所
- 内部ストレージ...常にすべてのデバイスで利用できる。容量は少ないが信頼性が高く、アプリ自体などの重要なデータを保存する。
- 外部ストレージ...容量多め。SDカードなどは外部ストレージに含まれる。アプリ(API29以上)には外部ストレージに対する特別アクセス権限(対象範囲別ストレージ)がデフォルトで付与される
ファイルシステム
- アプリ固有のストレージ...アプリ専用のファイルを保存する。内部・外部ストレージどちらにも保存可能。他のアプリにアクセスされたくない場合は内部ストレージを使用する。アプリがアンインストールされると保存データも削除される。
- 共有ストレージ...メディアやドキュメントなど、アプリが他のアプリと共有するファイルを保存する。アプリがアンインストールされても保存データは残る。
- 設定...Key-Valueペアで環境変数などを保存する。
- データベース...構造化データをデータベースに保存する。
使用方法
- アプリ固有のストレージ&内部ストレージ... getFilesDir() / getCacheDir()
- アプリ固有のストレージ&外部ストレージ... getExternalFilesDir() / getExternalCacheDir()
- 共有ストレージ&メディアファイル(画像、音声、動画)... MediaStore API
- 共有ストレージ&その他の種類のコンテンツ... ストレージアクセスフレームワーク(SAF)
- 設定...Jetpack Preferencesライブラリ
- データベース...Room永続ライブラリ
感想
Androidはセキュリティ的な面からAPIが上がるごとに権限が厳しくなってきている。
用途に合わせて利用するライブラリを使いこなしていかないといけない。
世間的な流れとしては最近Googleが外部ストレージを廃止した端末を出したりなど無くす方向に行きそうな雰囲気。
AndroidもiPhoneと同じくオンラインストレージを主流にしていきたいのかもしれない。