Google berkomitmen untuk mendorong terwujudnya keadilan rasial bagi komunitas Kulit Hitam. Lihat caranya.

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 (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 tinggi

Izin 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.

Video