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 (API level 19) atau yang lebih tinggi |
Tidak, jika file berada di direktori dalam penyimpanan internal Ya, jika file berada di direktori dalam penyimpanan eksternal |
Ya |
Media | File media yang dapat dibagikan (gambar, file audio, video) | MediaStore API |
READ_EXTERNAL_STORAGE atau WRITE_EXTERNAL_STORAGE saat mengakses file aplikasi lain di Android 10 (API level 29) atau yang lebih tinggiIzin diperlukan untuk semua file di Android 9 (API level 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 | Tak Ada | Ya, melalui alat pilih file sistem | Tidak |
Preferensi Aplikasi | Key-value pair | Library Preferensi Jetpack | Tak Ada | Tidak | Ya |
Database | Data terstruktur | Library persistensi Room | Tak 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 andalkah 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 untuk 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—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 berikut untuk akses baca dan tulis ke penyimpanan eksternal: READ_EXTERNAL_STORAGE
dan WRITE_EXTERNAL_STORAGE
.
Pada versi Android sebelumnya, aplikasi perlu mendeklarasikan izin ini untuk mengakses file apa pun di luar direktori khusus aplikasi pada penyimpanan eksternal. Versi Android yang lebih baru lebih mengandalkan fungsi file daripada lokasinya untuk menentukan kemampuan aplikasi mengakses file tersebut. Model penyimpanan berbasis tujuan ini meningkatkan privasi pengguna karena aplikasi diberikan akses hanya ke area sistem file perangkat yang benar-benar digunakan.
Penyimpanan terbatas
Untuk memberi pengguna kontrol yang lebih besar atas file mereka dan untuk membatasi ketidakrapian file, aplikasi yang menargetkan Android 10 (API level 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.
Jika aplikasi Anda memiliki kasus penggunaan lain yang tidak tercakup oleh penyimpanan terbatas, ajukan permintaan fitur dan gunakan fitur kompatibilitas aplikasi yang diberikan platform.
Praktik terbaik untuk pengoperasian file
Bagian ini menyajikan beberapa praktik terbaik umum untuk membuka dan membagikan file dari aplikasi Anda.
Jangan membuka dan menutup file secara berulang
Untuk membantu mempertahankan performa aplikasi Anda, jangan membuka dan menutup file yang sama beberapa kali. Tidak mudah bagi sistem untuk membuka file dan membaca file untuk pertama kalinya.
Membagikan file individu
Jika Anda ingin membagikan file individu atau data aplikasi dengan aplikasi lain, Android menyediakan API berikut:
- Jika Anda ingin membagikan file tertentu dengan aplikasi lain, gunakan
FileProvider
API. - Jika ingin mengekspos data ke aplikasi lain, Anda dapat menggunakan penyedia konten. Penyedia konten memberi Anda kontrol penuh atas akses baca dan tulis yang tersedia untuk aplikasi lain. Meskipun Anda dapat menggunakan penyedia konten dengan media penyimpanan apa pun, biasanya penyedia konten paling banyak digunakan dengan database.
Menampilkan file di perangkat
Untuk melihat file yang disimpan di perangkat, gunakan Device File Explorer Android Studio.
Referensi lainnya
Untuk informasi selengkapnya tentang penyimpanan data, lihat referensi berikut.