Ringkasan penyimpanan data dan file

Android menggunakan sistem file yang serupa dengan sistem file berbasis disk pada platform lain. Sistem ini menyediakan beberapa opsi bagi Anda untuk menyimpan data aplikasi:

  • Penyimpanan khusus aplikasi: Menyimpan file yang hanya ditujukan untuk penggunaan aplikasi Anda, baik di direktori khusus dalam volume penyimpanan internal maupun direktori khusus lain dalam penyimpanan eksternal. Menggunakan direktori dalam penyimpanan internal untuk menyimpan informasi sensitif yang tidak boleh diakses aplikasi lain.
  • Penyimpanan bersama: Menyimpan file yang ingin dibagikan aplikasi Anda dengan aplikasi lain, termasuk media, dokumen, dan file lainnya.
  • Preferensi: Menyimpan data primitif pribadi dalam key-value pair.
  • Database: Menyimpan data terstruktur dalam database pribadi menggunakan library persistensi Room.

Karakteristik opsi ini dirangkum dalam tabel berikut:

Jenis konten Metode akses Perlu izin Dapatkah aplikasi lain mengaksesnya? File dihapus saat aplikasi di-uninstal?
File khusus aplikasi File hanya ditujukan untuk penggunaan aplikasi Anda Dari penyimpanan internal, getFilesDir() atau getCacheDir()

Dari penyimpanan eksternal, getExternalFilesDir() atau getExternalCacheDir()
Tidak pernah diperlukan untuk penyimpanan internal

Tidak diperlukan untuk penyimpanan eksternal saat aplikasi Anda digunakan di perangkat yang menjalankan Android 4.4 (Level API 19) atau yang lebih tinggi
Tidak Ya
Media File media yang dapat dibagikan (gambar, file audio, video) MediaStore API READ_EXTERNAL_STORAGE saat mengakses file aplikasi lain di Android 11 (Level API 30) atau yang lebih tinggi

READ_EXTERNAL_STORAGE atau WRITE_EXTERNAL_STORAGE saat mengakses aplikasi lain di Android 10 (Level API 29)

Izin diperlukan untuk semua file di Android 9 (Level API 28) atau yang lebih rendah
Ya, meskipun aplikasi lain memerlukan izin READ_EXTERNAL_STORAGE Tidak
Dokumen dan file lainnya Jenis konten yang dapat dibagikan lainnya, termasuk file yang didownload Storage Access Framework Tidak ada Ya, melalui alat pilih file sistem Tidak
Preferensi Aplikasi Key-value pair Library Preferensi Jetpack Tidak ada Tidak Ya
Database Data terstruktur Library persistensi Room Tidak ada Tidak Ya

Solusi yang Anda pilih bergantung pada kebutuhan spesifik Anda:

Berapa banyak ruang yang diperlukan data Anda?
Penyimpanan internal memiliki ruang terbatas untuk data khusus aplikasi. Gunakan jenis penyimpanan lain jika Anda perlu menyimpan sejumlah besar data.
Seberapa andal akses data yang diperlukan?
Jika fungsionalitas dasar aplikasi Anda memerlukan data tertentu, seperti saat aplikasi dimulai, tempatkan data dalam direktori penyimpanan internal atau database. File khusus aplikasi yang disimpan dalam penyimpanan eksternal tidak selalu dapat diakses karena beberapa perangkat memungkinkan pengguna menghapus perangkat fisik yang sesuai dengan penyimpanan eksternal.
Jenis data apa yang perlu Anda simpan?
Jika Anda memiliki data yang hanya bermanfaat bagi aplikasi Anda, gunakan penyimpanan khusus aplikasi. Untuk konten media yang dapat dibagikan, gunakan penyimpanan bersama sehingga aplikasi lain dapat mengakses konten tersebut. Untuk data terstruktur, gunakan preferensi (untuk data nilai kunci) atau database (untuk data yang berisi lebih dari 2 kolom).
Haruskah data bersifat pribadi untuk aplikasi Anda?
Saat menyimpan data sensitif, yaitu data yang tidak boleh diakses dari aplikasi lain, gunakan penyimpanan internal, preferensi, atau database. Penyimpanan internal memiliki manfaat tambahan yaitu data disembunyikan dari pengguna.

Kategori lokasi penyimpanan

Android menyediakan dua jenis lokasi penyimpanan fisik: penyimpanan internal dan penyimpanan eksternal. Pada sebagian besar perangkat, penyimpanan internal lebih kecil daripada penyimpanan eksternal. Namun, penyimpanan internal selalu tersedia di semua perangkat, menjadikannya sebagai tempat yang lebih andal untuk menyimpan data yang menjadi tempat aplikasi Anda bergantung.

Volume yang dapat dilepas, seperti kartu SD, muncul di sistem file sebagai bagian dari penyimpanan eksternal. Android mewakili perangkat ini menggunakan jalur, seperti /sdcard.

Aplikasi itu sendiri disimpan dalam penyimpanan internal secara default. Namun, jika ukuran APK Anda sangat besar, Anda dapat menunjukkan preferensi dalam file manifes aplikasi untuk menginstal aplikasi di penyimpanan eksternal:

<manifest ...
  android:installLocation="preferExternal">
  ...
</manifest>

Izin dan akses ke penyimpanan eksternal

Android menentukan izin terkait penyimpanan berikut: READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE, dan MANAGE_EXTERNAL_STORAGE.

Pada versi Android sebelumnya, aplikasi perlu mendeklarasikan izin READ_EXTERNAL_STORAGE untuk mengakses file apa pun di luar direktori khusus aplikasi pada penyimpanan eksternal. Selain itu, aplikasi perlu mendeklarasikan izin WRITE_EXTERNAL_STORAGE untuk menulis ke file apa pun di luar direktori khusus aplikasi.

Versi Android yang lebih baru lebih mengandalkan tujuan file daripada lokasinya untuk menentukan kemampuan aplikasi dalam mengakses dan menulis file tertentu. Secara khusus, jika aplikasi Anda menargetkan Android 11 (Level API 30) atau yang lebih tinggi, izin WRITE_EXTERNAL_STORAGE tidak akan berpengaruh pada akses aplikasi Anda ke penyimpanan. Model penyimpanan berbasis tujuan ini meningkatkan privasi pengguna karena aplikasi diberikan akses hanya ke area sistem file perangkat yang benar-benar digunakan.

Android 11 memperkenalkan izin MANAGE_EXTERNAL_STORAGE, yang menyediakan akses tulis ke file di luar direktori khusus aplikasi dan MediaStore. Untuk mempelajari izin ini lebih lanjut, dan alasan sebagian besar aplikasi tidak perlu mendeklarasikannya untuk memenuhi kasus penggunaannya, lihat panduan cara mengelola semua file di perangkat penyimpanan.

Penyimpanan terbatas

Untuk memberi pengguna kontrol yang lebih besar atas file mereka dan untuk membatasi ketidakrapian file, aplikasi yang menargetkan Android 10 (Level API 29) dan yang lebih tinggi akan diberi akses terbatas ke penyimpanan eksternal, atau penyimpanan terbatas, secara default. Aplikasi semacam itu hanya memiliki akses ke direktori khusus aplikasi pada penyimpanan eksternal, serta jenis media tertentu yang telah dibuat oleh aplikasi.

Gunakan penyimpanan terbatas kecuali jika aplikasi memerlukan akses ke file yang disimpan di luar direktori khusus aplikasi dan di luar direktori yang dapat diakses MediaStore API. Jika Anda menyimpan file khusus aplikasi di penyimpanan eksternal, Anda dapat mempermudah penerapan penyimpanan terbatas dengan menempatkan file ini di direktori khusus aplikasi pada penyimpanan eksternal. Dengan demikian, aplikasi Anda mempertahankan akses ke file ini saat penyimpanan terbatas diaktifkan.

Guna menyiapkan aplikasi Anda untuk penyimpanan terbatas, lihat panduan kasus penggunaan dan praktik penyimpanan. Jika aplikasi Anda memiliki kasus penggunaan lain yang tidak tercakup oleh penyimpanan terbatas, ajukan permintaan fitur. Anda dapat memilih untuk tidak menggunakan penyimpanan terbatas untuk sementara.

Menampilkan file di perangkat

Untuk melihat file yang disimpan di perangkat, gunakan Device File Explorer Android Studio.

Referensi lainnya

Untuk mengetahui informasi selengkapnya tentang penyimpanan data, lihat referensi berikut.

Video