Daten- und Dateispeicher – Übersicht

Android verwendet ein Dateisystem, das den laufwerksbasierten Dateisystemen anderer Plattformen ähnelt. Das System bietet mehrere Optionen zum Speichern Ihrer App-Daten:

  • App-spezifischer Speicher: Speichern Sie Dateien, die nur für Ihre App bestimmt sind, entweder in dedizierten Verzeichnissen innerhalb eines internen Speicher-Volumes oder in anderen dedizierten Verzeichnissen im externen Speicher. Verwende die Verzeichnisse im internen Speicher, um vertrauliche Informationen zu speichern, auf die andere Apps nicht zugreifen sollen.
  • Freigegebener Speicher: Hier werden Dateien gespeichert, die Ihre App für andere Apps freigeben soll, einschließlich Medien, Dokumenten und anderen Dateien.
  • Einstellungen: Private, primitive Daten in Schlüssel/Wert-Paaren speichern.
  • Datenbanken: Strukturierte Daten in einer privaten Datenbank mithilfe der Room-Persistenzbibliothek speichern.

Die Merkmale dieser Optionen sind in der folgenden Tabelle zusammengefasst:

Art der Inhalte Zugriffsmethode Berechtigungen erforderlich Können andere Apps darauf zugreifen? Werden Dateien beim Deinstallieren der App entfernt?
App-spezifische Dateien Dateien, die nur für Ihre App bestimmt sind Aus dem internen Speicher, getFilesDir() oder getCacheDir()

Aus dem externen Speicher, getExternalFilesDir() oder getExternalCacheDir()
Für internen Speicher nie erforderlich

Für externen Speicher nicht erforderlich, wenn Ihre App auf Geräten mit Android 4.4 (API-Level 19) oder höher verwendet wird
Nein Ja
Medien Teilbare Mediendateien (Bilder, Audiodateien, Videos) MediaStore API READ_EXTERNAL_STORAGE beim Zugriff auf Dateien anderer Apps unter Android 11 (API-Level 30) oder höher

READ_EXTERNAL_STORAGE oder WRITE_EXTERNAL_STORAGE beim Zugriff auf Dateien anderer Apps unter Android 10 (API-Level 29)

Berechtigungen sind für alle Dateien unter Android 9 (API-Level 28) oder niedriger erforderlich
Ja, die andere App benötigt jedoch die Berechtigung READ_EXTERNAL_STORAGE. Nein
Dokumente und andere Dateien Andere Arten von freigegebenen Inhalten, einschließlich heruntergeladener Dateien Storage Access Framework Keine Ja, über die Systemdateiauswahl Nein
App-Einstellungen Schlüssel/Wert-Paare Jetpack Preferences-Bibliothek Keine Nein Ja
Lokale Datenbank Strukturierte relationale Daten auf dem Gerät Room-Persistenzbibliothek 1 Keine Nein Ja
In der Cloud gehostete Datenbanken Synchronisierte Daten auf mehreren Geräten, Zusammenarbeit in Echtzeit Cloud Firestore, Firebase SQL Connect INTERNET Nur das Cloud-Backend verwenden SDK-Cache wird gelöscht, Cloud-Daten bleiben jedoch erhalten
In der Cloud gehosteter Objektspeicher Unstrukturierte Daten (z. B. Medien, große Dateien oder Backups) Cloud Storage for Firebase INTERNET Nur das Cloud-Backend verwenden SDK-Cache wird gelöscht, Cloud-Daten bleiben jedoch erhalten

1 Wenn Sie lokale Room-Datenbanken geräteübergreifend synchronisieren möchten, koppeln Sie Room mit einem Cloud-Backend oder verwenden Sie verwaltete Synchronisierungslösungen wie Firebase.

Welche Lösung Sie wählen, hängt von Ihren spezifischen Anforderungen ab:

Wie viel Speicherplatz benötigen Ihre Daten?
Der interne Speicher bietet nur begrenzten Platz für App-spezifische Daten. Verwenden Sie andere Speichertypen, wenn Sie eine erhebliche Datenmenge speichern müssen.
Wie zuverlässig muss der Datenzugriff sein?
Wenn die Grundfunktionen Ihrer App bestimmte Daten erfordern, z. B. beim Starten der App, speichern Sie diese Daten im internen Speicherverzeichnis oder in einer Datenbank. App-spezifische Dateien, die im externen Speicher gespeichert sind, sind nicht immer zugänglich, da Nutzer bei einigen Geräten ein physisches Gerät entfernen können, das dem externen Speicher entspricht.
Welche Art von Daten müssen Sie speichern?
Wenn Sie Daten haben, die nur für Ihre App relevant sind, verwenden Sie App-spezifischen Speicher. Verwenden Sie für teilbare Medieninhalte den freigegebenen Speicher, damit andere Apps auf die Inhalte zugreifen können. Verwenden Sie für strukturierte Daten entweder Einstellungen (für Schlüssel/Wert-Daten) oder eine Datenbank (für Daten mit mehr als zwei Spalten).
Sollen die Daten nur für Ihre App zugänglich sein?
Wenn du vertrauliche Daten speicherst, auf die keine andere App zugreifen können soll, verwende den internen Speicher, die Einstellungen oder eine Datenbank. Der interne Speicher hat den zusätzlichen Vorteil, dass die Daten für Nutzer nicht sichtbar sind.

Kategorien von Speicherorten

Android bietet zwei Arten von physischen Speicherorten: internen Speicher und externen Speicher. Auf den meisten Geräten ist der interne Speicher kleiner als der externe Speicher. Der interne Speicher ist jedoch immer auf allen Geräten verfügbar. Daher ist er ein zuverlässigerer Ort für Daten, von denen deine App abhängt.

Wechseldatenträger wie SD-Karten werden im Dateisystem als Teil des externen Speichers angezeigt. Android stellt diese Geräte über einen Pfad dar, z. B. /sdcard.

Apps selbst werden standardmäßig im internen Speicher gespeichert. Wenn Ihr APK sehr groß ist, können Sie in der Manifestdatei Ihrer App angeben, dass die App stattdessen auf einem externen Speicher installiert werden soll:

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

Berechtigungen und Zugriff auf externen Speicher

Android definiert die folgenden speicherbezogenen Berechtigungen: READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE und MANAGE_EXTERNAL_STORAGE.

In früheren Android-Versionen mussten Apps die Berechtigung READ_EXTERNAL_STORAGE deklarieren, um auf Dateien außerhalb der appspezifischen Verzeichnisse im externen Speicher zuzugreifen. Außerdem mussten Apps die Berechtigung WRITE_EXTERNAL_STORAGE deklarieren, um in eine Datei außerhalb des app-spezifischen Verzeichnisses schreiben zu können.

In neueren Android-Versionen wird die Fähigkeit einer App, auf eine bestimmte Datei zuzugreifen und in diese zu schreiben, eher durch den Zweck der Datei als durch ihren Speicherort bestimmt. Wenn deine App auf Android 11 (API-Level 30) oder höher ausgerichtet ist, hat die Berechtigung WRITE_EXTERNAL_STORAGE keine Auswirkungen auf den Zugriff deiner App auf den Speicher. Dieses zweckbasierte Speichermodell verbessert den Datenschutz für Nutzer, da Apps nur Zugriff auf die Bereiche des Dateisystems des Geräts erhalten, die sie tatsächlich verwenden.

In Android 11 wird die Berechtigung MANAGE_EXTERNAL_STORAGE eingeführt, die Schreibzugriff auf Dateien außerhalb des app-spezifischen Verzeichnisses und MediaStore gewährt. Weitere Informationen zu dieser Berechtigung und dazu, warum die meisten Apps sie nicht deklarieren müssen, um ihre Anwendungsfälle zu erfüllen, finden Sie im Leitfaden zum Verwalten aller Dateien auf einem Speichergerät.

Begrenzter Speicher

Damit Nutzer mehr Kontrolle über ihre Dateien haben und um die Anzahl der Dateien zu begrenzen, erhalten Apps, die auf Android 10 (API-Level 29) und höher ausgerichtet sind, standardmäßig begrenzten Zugriff auf den externen Speicher, auch begrenzter Speicher genannt. Solche Apps haben nur Zugriff auf das app-spezifische Verzeichnis im externen Speicher sowie auf bestimmte Medientypen, die von der App erstellt wurden.

Verwende den begrenzten Speicher, es sei denn, deine App benötigt Zugriff auf eine Datei, die außerhalb eines app-spezifischen Verzeichnisses und außerhalb eines Verzeichnisses gespeichert ist, auf das die MediaStore-APIs zugreifen können. Wenn du app-spezifische Dateien im externen Speicher speicherst, kannst du die Einführung des begrenzten Speichers vereinfachen, indem du diese Dateien in einem app-spezifischen Verzeichnis im externen Speicher ablegst. So behält Ihre App den Zugriff auf diese Dateien, wenn der begrenzte Speicher aktiviert ist.

Informationen dazu, wie du deine App auf den begrenzten Speicher vorbereitest, findest du im Leitfaden Anwendungsfälle und Best Practices für den Android-Speicher. Wenn Ihre App einen anderen Anwendungsfall hat, der nicht durch den begrenzten Speicher abgedeckt ist, reichen Sie einen Feature Request ein. Sie können die Verwendung des begrenzten Speichers vorübergehend deaktivieren.

Dateien auf einem Gerät ansehen

Wenn Sie die auf einem Gerät gespeicherten Dateien ansehen möchten, verwenden Sie den Geräte-Datei-Explorer von Android Studio.

Zusätzliche Ressourcen

Weitere Informationen zur Datenspeicherung finden Sie in den folgenden Ressourcen.

Videos