Android verwendet ein Dateisystem, das datenträgerbasierten Dateisystemen in anderen Plattformen. Das System bietet mehrere Optionen zum Speichern Ihrer App-Daten:
- App-spezifischer Speicher:Speichern Sie Dateien, die nur für die Nutzung durch Ihre App bestimmt sind. entweder in speziellen Verzeichnissen innerhalb eines internen Speicher-Volumes oder dedizierten Verzeichnissen innerhalb des externen Speichers. Verwenden Sie die Verzeichnisse innerhalb von internen Speicher, um vertrauliche Daten zu speichern, auf die andere Apps keinen Zugriff haben sollen.
- Gemeinsam genutzter Speicher:Hier können Sie Dateien speichern, die Ihre App für andere Nutzer freigeben möchte. Apps, einschließlich Medien, Dokumenten und anderen Dateien.
- Einstellungen:Speichern Sie private, primitive Daten in Schlüssel/Wert-Paaren.
- Datenbanken:Speichern Sie strukturierte Daten mithilfe der Funktion „Room“ in einer privaten Datenbank. Persistenzbibliothek.
Die Eigenschaften dieser Optionen sind in der folgenden Tabelle zusammengefasst:
Art der Inhalte | Zugriffsmethode | Berechtigungen erforderlich | Können andere Apps darauf zugreifen? | Werden Dateien bei der Deinstallation der App entfernt? | |
---|---|---|---|---|---|
App-spezifisch Dateien | Dateien, die nur für die Verwendung in deiner App bestimmt sind | Aus dem internen Speicher, getFilesDir() oder
getCacheDir() Auf einem externen Speichergerät getExternalFilesDir() oder
getExternalCacheDir() |
Nie für internen Speicher benötigt Nicht für externen Speicher benötigt Speicherplatz, wenn deine App auf Geräten mit Android 4.4 (API-Level 19) verwendet wird oder höher |
Nein | Ja |
Medien | Gemeinsam nutzbare Mediendateien (Bilder, Audiodateien, Videos) | MediaStore -API |
READ_EXTERNAL_STORAGE beim Zugriff auf die Dateien auf
Android 11 (API-Level 30) oder höherREAD_EXTERNAL_STORAGE oder WRITE_EXTERNAL_STORAGE
beim Zugriff auf andere Apps Dateien unter Android 10 (API-Level 29)Unter Android 9 (API-Level 28) sind für alle Dateien Berechtigungen erforderlich oder niedriger |
Ja, aber die andere App benötigt die READ_EXTERNAL_STORAGE
Berechtigung |
Nein |
Dokumente und andere Dateien | Andere Arten von Inhalten, die geteilt werden können, einschließlich heruntergeladener Dateien | Storage Access Framework | Keine | Ja, über die Systemdateiauswahl | Nein |
App-Kampagnen Einstellungen | Schlüssel/Wert-Paare | Jetpack Bibliothek der Einstellungen | Keine | Nein | Ja |
Datenbank | Strukturierte Daten | Chatroom-Persistenzbibliothek | Keine | Nein | Ja |
Die Lösung, für die Sie sich entscheiden, hängt von Ihren spezifischen Anforderungen ab:
- Wie viel Speicherplatz benötigen Ihre Daten?
- Im internen Speicher ist der Speicherplatz für appspezifische Daten begrenzt. Andere Arten von wenn Sie eine große Datenmenge sparen müssen.
- Wie zuverlässig muss der Datenzugriff sein?
- Wenn für die grundlegenden Funktionen deiner App bestimmte Daten erforderlich sind, z. B. wenn deine App die Daten im internen Speicherverzeichnis oder in einer Datenbank ablegen. Nicht immer kann auf App-spezifische Dateien im externen Speicher zugegriffen werden da Nutzer auf einigen Geräten ein physisches Gerät entfernen können, externen Speicher.
- Welche Art von Daten müssen gespeichert werden?
- Wenn Sie Daten haben, die nur für Ihre App relevant sind, verwenden Sie App-spezifische Speicherplatz. Verwenden Sie für gemeinsam nutzbare Medieninhalte den freigegebenen Speicher, damit andere Apps auf die Inhalte zugreifen können. Verwenden Sie für strukturierte Daten beide Einstellungen (für Schlüssel/Wert-Paare Daten) oder eine Datenbank (für Daten mit mehr als 2 Spalten).
- Sollten die Daten für Ihre App privat sein?
- Beim Speichern sensibler Daten, also Daten, die von keinem anderen App: internen Speicher, Einstellungen oder eine Datenbank verwenden. Der interne Speicher hat da die Daten für Nutzende nicht sichtbar sind.
Kategorien von Speicherstandorten
Android bietet zwei Arten von physischen Speicherorten: interner Speicher und externen Speichers. Auf den meisten Geräten ist der interne Speicher kleiner als der externe Speicher. Speicherplatz. Der interne Speicher ist jedoch immer auf allen Geräten verfügbar, um die Daten, von denen Ihre App abhängt, zuverlässiger zu speichern.
Wechseldatenträger, z. B. eine SD-Karte, werden im Dateisystem
externen Speicher. Android stellt diese Geräte über einen Pfad dar, z. B.
/sdcard
Die Apps selbst werden standardmäßig im internen Speicher gespeichert. Wenn Ihre APK-Größe sehr groß ist. Sie können jedoch im Manifest Ihrer App eine Präferenz angeben. -Datei, um Ihre App stattdessen im externen Speicher zu installieren:
<manifest ... android:installLocation="preferExternal"> ... </manifest>
Berechtigungen und Zugriff auf externen Speicher
In Android sind die folgenden speicherbezogenen Berechtigungen definiert:
READ_EXTERNAL_STORAGE
,
WRITE_EXTERNAL_STORAGE
und
MANAGE_EXTERNAL_STORAGE
In früheren Android-Versionen mussten Apps die
READ_EXTERNAL_STORAGE
-Berechtigung, um auf beliebige Dateien außerhalb der app-spezifischen
im externen Speicher.
Außerdem müssen Apps, in denen die Schreibberechtigung WRITE_EXTERNAL_STORAGE
erklärt werden muss,
eine beliebige Datei außerhalb des
anwendungsspezifischen Verzeichnisses.
Neuere Android-Versionen verlassen sich eher auf den Zweck einer Datei als auf ihren Speicherort
zum Bestimmen der Fähigkeit einer Anwendung, auf eine bestimmte Datei zuzugreifen und in diese zu schreiben. In
Wenn Ihre App auf Android 11 (API-Level 30) oder höher ausgerichtet ist,
Die Berechtigung „WRITE_EXTERNAL_STORAGE
“ hat keine Auswirkungen auf deine App
Zugriff auf den Speicher. Zweckbasiertes Speichermodell verbessert den Datenschutz
da Apps nur Zugriff auf die Bereiche des Dateisystems des Geräts erhalten,
die sie tatsächlich nutzen.
Android 11 führt die Berechtigung MANAGE_EXTERNAL_STORAGE
ein,
Schreibzugriff auf Dateien außerhalb des anwendungsspezifischen Verzeichnisses und von MediaStore
. Bis
Weitere Informationen zu dieser Berechtigung und dazu, warum die meisten Apps sie nicht deklarieren müssen
ihre Anwendungsfälle erfüllen, finden Sie im Leitfaden zur Verwaltung aller
Dateien auf einem Speichergerät an.
Begrenzter Speicher
Um Nutzern mehr Kontrolle über ihre Dateien zu geben und Dateien übersichtlicher zu gestalten, werden Apps, die Ziel-Android 10 (API-Level 29) und höher erhalten eingeschränkten Zugriff auf externe begrenztem Speicher verwendet. Diese Apps haben nur Zugriff auf die App-spezifisches Verzeichnis auf externen Speichermedien sowie bestimmte Medientypen die die App erstellt hat.
Begrenzten Speicher verwenden, es sei denn, Ihre Anwendung benötigt Zugriff auf eine Datei, die außerhalb von gespeichert ist
eines app-spezifischen Verzeichnisses und außerhalb
eines Verzeichnisses, das die MediaStore
APIs haben Zugriff. Wenn Sie App-spezifische Dateien in einem externen Speicher speichern, können Sie
die Nutzung des begrenzten Speichers erleichtern, indem Sie diese Dateien in einem
app-spezifisches Verzeichnis auf externen
Speicherplatz. So kann Ihre App
behält Zugriff auf diese Dateien, wenn der beschränkte Speicher aktiviert ist.
Informationen zur Vorbereitung Ihrer Anwendung auf den begrenzten Speicher finden Sie unter Speicheranwendungsfälle und Best Practices Leitfaden für Best Practices. Wenn Ihre App zu einem anderen Zweck die nicht durch den begrenzten Speicher abgedeckt ist, reichen Sie ein Element ein anfragen. Sie können vorübergehend die Verwendung von Speicherplatz.
Dateien auf einem Gerät ansehen
Um die auf einem Gerät gespeicherten Dateien anzusehen, verwende die Device File (Gerätedatei) von Android Studio Explorer:
Weitere Informationen
Weitere Informationen zur Datenspeicherung finden Sie in den folgenden Ressourcen.