App-interner Speicher: Was es ist, Datenspeichermethoden und wie es in der Entwicklung funktioniert

Autor: IT Sectr Veröffentlicht: 2026-03-13 Lesezeit: 11 Min.

Der app-interne Speicher ist ein dedizierter Bereich auf dem Gerät, der nur einer bestimmten Anwendung über isolierten Speicher zugänglich ist. Laut Android Developers, 2026 erhält jede Anwendung ihr eigenes Sandbox-Verzeichnis, auf das andere Anwendungen keinen direkten Zugriff haben. Dieser Ansatz schützt Daten vor unbefugtem Lesen und gewährleistet einen stabilen Betrieb in einer Multitasking-Umgebung mobiler Geräte.

Wichtige Punkte

  • Internal Storage — isolierter Speicher jeder Anwendung, für andere Programme unzugänglich
  • Sandbox-Modell stellt sicher, dass Daten einer Anwendung nicht von einer anderen ohne spezielle Berechtigungen gelesen werden können
  • Android bietet Context.getFilesDir(), getCacheDir() und getDataDir() für den Zugriff auf den internen Speicher
  • iOS verwendet NSDocumentDirectory und NSCachesDirectory im Sandbox-Container der App
  • Automatische Bereinigung beim Deinstallieren der App garantiert die vollständige Löschung aller Daten aus dem internen Speicher

Was ist der app-interne Speicher?

Der app-interne Speicher ist ein isoliertes Verzeichnis, das das Betriebssystem jeder Anwendung während der Installation zuweist. Andere Anwendungen und der Benutzer können nicht über Standard-Dateimanager auf dieses Verzeichnis zugreifen. Das System garantiert, dass alle Daten in diesem Verzeichnis bei der Deinstallation der Anwendung vollständig gelöscht werden. Dieser Ansatz bildet die Grundlage des Sicherheitsmodells mobiler Betriebssysteme und verhindert das Durchsickern vertraulicher Informationen zwischen Programmen.

Im Gegensatz zum externen Speicher (SD-Karte) ist der interne Speicher immer verfügbar und erfordert keine Überprüfung auf vorhandene Medien. Die Lese- und Schreibgeschwindigkeiten im NAND-Flash-Speicher moderner Geräte erreichen 800–900 MB/s sequenzielles Lesen und 200–300 MB/s sequenzielles Schreiben, vergleichbar mit SATA-SSDs. Die Größe des zugewiesenen Bereichs hängt von der Gesamtkapazität des Geräts und der Herstellerrichtlinie ab: Bei Geräten mit 64 GB Flash-Speicher erhält die App 16 bis 64 MB anfänglichen Speicherplatz mit der Möglichkeit der Erweiterung nach Bedarf.

Die Architektur des internen Speichers unterscheidet sich zwischen Android und iOS. Unter Android erhält jede Anwendung ein Verzeichnis /data/data/<package_name>/, in dem das System die Unterverzeichnisse files/, cache/ und databases/ erstellt. Unter iOS arbeitet die Anwendung in einem Sandbox-Container mit den Verzeichnissen Documents/, Library/ und tmp/, die jeweils ihren eigenen Zweck und ihre eigene Sicherungsrichtlinie haben.

Datenspeichermethoden im internen Speicher

Entwickler haben Zugriff auf mehrere Methoden zum Speichern von Daten im app-internen Speicher. Jede Methode löst eine bestimmte Aufgabe und eignet sich für eine bestimmte Art von Daten. Die Wahl der richtigen Methode wirkt sich direkt auf die Anwendungsleistung, die Entwicklungseffizienz und die Sicherheit der Benutzerdaten aus.

Isolierte Dateispeicherung

Die Methode der niedrigsten Ebene ist das direkte Schreiben von Dateien in das Dateiverzeichnis. Eine App kann beliebige Dateien und Verzeichnisse innerhalb ihrer Sandbox erstellen. Diese Methode eignet sich zum Speichern von Mediendateien, Benutzerdokumenten und allen binären Daten, die keine strukturierte Organisation erfordern. Unter Android erfolgt der Zugriff auf das Verzeichnis über den Aufruf Context.getFilesDir(), der den absoluten Pfad zum Dateiverzeichnis der App zurückgibt. Unter iOS erfüllt die Funktion NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) einen ähnlichen Zweck.

SharedPreferences und DataStore

Zum Speichern von Schlüssel-Wert-Paaren bietet Android SharedPreferences und den moderneren DataStore basierend auf Kotlin-Koroutinen und dem Protobuf-Protokoll. SharedPreferences speichert Daten in einer XML-Datei im Verzeichnis /data/data/<package>/shared_prefs/. Trotz der Einfachheit hat SharedPreferences Nachteile: Synchrones Schreiben kann Verzögerungen im UI-Thread verursachen, und das Fehlen von Typsicherheit erhöht das Fehlerrisiko. DataStore löst diese Probleme durch eine asynchrone API basierend auf Flow und vollständige Typunterstützung über Protobuf-Schemata.

SQLite-Datenbank und Room

Für strukturierte Daten mit relationalen Verknüpfungen ist SQLite oder der Room-Wrapper die optimale Wahl. Die Datenbank wird in einer einzigen Datei im Verzeichnis databases/ gespeichert und unterstützt die vollständige SQL-Syntax. Room ist eine offizielle Jetpack-Bibliothek, die eine typsichere API, automatische Schema-Migration und Koroutinen-Unterstützung bietet. Die Datenbankgröße kann bei ordnungsgemäßer Indizierung mehrere Gigabyte erreichen, ohne dass die Leistung wesentlich beeinträchtigt wird. SQLite auf mobilen Geräten verarbeitet auf einem modernen Flaggschiff-Prozessor bis zu 50.000 Schreiboperationen pro Sekunde.

EncryptedSharedPreferences

Zum Speichern vertraulicher Daten wie Authentifizierungstoken und Verschlüsselungsschlüssel bietet Android EncryptedSharedPreferences. Dieser Wrapper über die Standard-SharedPreferences verschlüsselt automatisch Schlüssel und Werte mit AES256-GCM-None. Die Verschlüsselung erfolgt auf Dateiebene vor dem Schreiben auf die Festplatte, sodass ein Angreifer selbst bei physischem Zugriff auf das Gerät den Inhalt nicht lesen kann. EncryptedSharedPreferences ist Teil der AndroidX Security Library, die auch EncryptedFile zum Verschlüsseln ganzer Dateien enthält.

So arbeiten Sie mit dem internen Speicher unter Android

Das Android SDK bietet eine Reihe von Methoden zum Arbeiten mit dem internen Speicher über die Context-Klasse. Jede Methode gibt einen Pfad zu einem bestimmten Systemverzeichnis innerhalb der App-Sandbox zurück. Sehen wir uns grundlegende Dateischreib- und Lesevorgänge am Beispiel von Kotlin an.

Zugriff auf filesDir über Context

Die wichtigste Methode zum Abrufen des Pfads zum internen Dateiverzeichnis ist context.filesDir. Sie gibt ein File-Objekt zurück, das auf das Verzeichnis /data/data/<package>/files/ verweist. Beim ersten Zugriff erstellt das System automatisch alle erforderlichen übergeordneten Verzeichnisse. Die Dateigröße im internen Speicher ist nicht explizit begrenzt, aber das gesamte Datenvolumen darf den verfügbaren Speicherplatz auf der Partition /data nicht überschreiten, der in der Regel 60–80 % der gesamten Flash-Speicherkapazität ausmacht.

kotlin
val context = getApplicationContext()
val file = File(context.filesDir, "notes.txt")

file.writeText("Notizinhalt")

val content = file.readText()
println("Gelesen: $content")

Die Methoden writeText und readText sind Erweiterungsfunktionen der Kotlin-Standardbibliothek. Sie verwalten automatisch das Öffnen und Schließen von Streams, wodurch Speicherlecks vermieden werden. Für Binärdaten verwenden Sie writeBytes und readBytes, die keine Kodierung erfordern und mit ByteArray-Arrays arbeiten. Bei der Arbeit mit großen Dateien wird die Verwendung von gepufferten Streams empfohlen: BufferedReader und BufferedWriter für Text, BufferedInputStream und BufferedOutputStream für Binärdaten.

Erstellen von Unterverzeichnissen im internen Speicher

Um Dateien hierarchisch zu organisieren, erstellen Sie Unterverzeichnisse in filesDir. Dies hilft, Daten nach Typ zu strukturieren: Bilder, Dokumente, Exportdateien. Die Methode mkdirs() erstellt alle fehlenden Verzeichnisse im Pfad, einschließlich verschachtelter. Stellen Sie sicher, dass der Erstellungsvorgang erfolgreich war — die Methode gibt nur dann true zurück, wenn neue Verzeichnisse erstellt wurden. Erstellungsfehler hängen meist mit unzureichendem Speicherplatz auf der Partition /data oder der Erschöpfung von Dateisystem-Inodes zusammen.

kotlin
val imagesDir = File(context.filesDir, "images")
if (imagesDir.mkdirs()) {
    println("Verzeichnis erstellt")
}

val imageFile = File(imagesDir, "photo.jpg")
imageFile.writeBytes(byteArray)

Um den verfügbaren Speicherplatz vor dem Schreiben großer Dateien zu überprüfen, verwenden Sie File.getFreeSpace() oder File.getUsableSpace(). Die zweite Methode gibt die Anzahl der Bytes zurück, die der aktuellen Anwendung unter Berücksichtigung von Sicherheitskontingenten zur Verfügung stehen — sie ist im Kontext von Multi-User-Geräten genauer. Wenn der verfügbare Speicherplatz kleiner als die erwartete Dateigröße ist, zeigen Sie dem Benutzer eine Meldung an und schlagen Sie vor, in den Geräteeinstellungen Speicherplatz freizugeben.

So arbeiten Sie mit dem internen Speicher unter iOS

Unter iOS arbeitet jede Anwendung in einem isolierten Sandbox-Container. Das System bietet keine API, um ohne spezielle Berechtigungen über dessen Grenzen hinauszugehen. Das wichtigste Werkzeug zur Arbeit mit dem Dateisystem ist die Klasse FileManager aus dem Foundation-Framework. Der Sandbox-Container enthält mehrere Standardverzeichnisse, die jeweils ihre eigene Sicherungsrichtlinie haben.

Zugriff auf das Documents-Verzeichnis über FileManager

Das Documents-Verzeichnis ist für Benutzerdaten vorgesehen, die zwischen den App-Starts erhalten bleiben und aus dem Backup wiederhergestellt werden sollen. iOS bindet dieses Verzeichnis automatisch in iCloud- und iTunes-Backups ein. Die Methode urls(for:in:) gibt ein Array von URLs des angeforderten Verzeichnisses zurück — das erste Element des Arrays ist das primäre.

swift
let fm = FileManager.default
let docs = fm.urls(
    for: .documentDirectory,
    in: .userDomainMask
).first!

let fileURL = docs.appendingPathComponent("data.plist")
try data.write(to: fileURL)

FileManager unterstützt eine vollständige Reihe von Dateioperationen: Erstellen, Kopieren, Verschieben, Löschen und Umbenennen von Dateien. Jede Operation kann einen Fehler auslösen, daher müssen alle Aufrufe in ein do-catch-Konstrukt eingeschlossen werden. Achten Sie besonders auf das Löschen von Dateien — der Vorgang ist irreversibel und eine Datenwiederherstellung nach removeItem(at:) ist ohne vorheriges Backup unmöglich.

Verwaltung von Backup-Ausnahmen

Nicht alle Daten im Sandbox-Container sollten in das iCloud-Backup aufgenommen werden. Beispielsweise müssen zwischengespeicherte heruntergeladene Bilder oder temporäre Verarbeitungsdateien nicht wiederhergestellt werden — sie werden bei der nächsten Verwendung neu erstellt. Um ein Verzeichnis oder eine Datei vom Backup auszuschließen, setzen Sie das Attribut isExcludedFromBackup auf true. Apple empfiehlt, Daten, die aus der Ferne wiederhergestellt werden können, immer vom Backup auszuschließen, um die iCloud-Speichernutzung zu minimieren und die Wiederherstellungszeit zu verkürzen.

swift
var cacheURL = fm.urls(
    for: .cachesDirectory,
    in: .userDomainMask
).first!
cacheURL.hasExcludedFromBackupKey = true

var values = URLResourceValues()
values.isExcludedFromBackup = true
try cacheURL.setResourceValues(values)

Unterschiede zwischen internem Speicher, Cache und externem Speicher

Jeder Speichertyp auf einem mobilen Gerät hat seinen eigenen Zweck und seine eigenen Nutzungsregeln. Das Verständnis dieser Unterschiede hilft dem Entwickler, den richtigen Ort für jede Datenart zu wählen. Nachfolgend finden Sie einen Vergleich der drei wichtigsten Speichertypen, die einer Anwendung zur Verfügung stehen.

EigenschaftInternal StorageCache-VerzeichnisExternal Storage
Sichtbarkeit für andere AppsVerstecktVerstecktZugänglich
Löschung bei App-DeinstallationVollständigVollständigAbhängig vom Standort
BackupAndroid — nein, iOS — ja (Documents)NeinNur bei Synchronisierung
Verfügbarkeit ohne MediumImmerImmerErfordert SD-Karte
Risiko des DatenverlustsMinimalHochMittel
Empfohlene DateigrößeBis zu 100 MBBis zu 50 MBBeliebig

Interner Speicher ist optimal für die Speicherung von App-Konfigurationen, Datenbankdateien und Benutzerdokumenten, die für andere Programme nicht zugänglich sein sollen. Das Cache-Verzeichnis ist für temporäre Dateien vorgesehen, die bei der nächsten Verwendung neu erstellt werden können: heruntergeladene Bilder, API-Antworten, zwischengespeicherte Verarbeitungsdaten. Externer Speicher eignet sich am besten für große Mediendateien (Fotos, Videos, Musik) und Daten, die der Benutzer über gemeinsamen Zugriff mit anderen Anwendungen teilen möchte.

Die Wahl des Speichertyps wirkt sich auch auf die App-Bewertung im Google Play Store und App Store aus. Anwendungen, die ohne Bereinigung große Datenmengen im internen Speicher speichern, erhalten negative Bewertungen: Benutzer beschweren sich über Speichermangel. Laut einer Studie von App Annie löschen 62 % der Benutzer eine App, wenn sie mehr als 500 MB des internen Gerätespeichers belegt, ohne dass eine Bereinigungsoption angeboten wird.

Empfehlungen zur Nutzung des internen Speichers

Die ordnungsgemäße Verwaltung des app-internen Speichers verbessert Leistung, Sicherheit und Benutzererfahrung. Die folgenden Empfehlungen basieren auf der offiziellen Android- und iOS-Dokumentation sowie auf praktischer Erfahrung bei der Entwicklung von Anwendungen mit Millionen von Installationen.

  • Minimieren Sie das Volumen der gespeicherten Daten. Verwenden Sie den internen Speicher nur für kritisch wichtige Dateien; lagern Sie alles andere im Cache oder externen Speicher
  • Reinigen Sie regelmäßig temporäre Dateien. Überprüfen Sie das Cache-Verzeichnis bei jedem Start und löschen Sie Dateien, die älter als 24 Stunden sind — dies reduziert die Systemlast und verhindert ein Überlaufen der /data-Partition
  • Verschlüsseln Sie vertrauliche Daten mit EncryptedSharedPreferences oder EncryptedFile aus der AndroidX Security Library. Das Speichern von Tokens und Passwörtern im Klartext ist eine häufige Sicherheitslücke, die von Trojanern mit Root-Zugriff ausgenutzt wird
  • Verwenden Sie Migration bei der Aktualisierung der Dateistruktur. Prüfen Sie bei der Veröffentlichung einer neuen App-Version auf alte Dateien und verschieben Sie diese in neue Verzeichnisse, bevor Sie die alten löschen

Besondere Aufmerksamkeit sollte dem Testen von Grenzfällen gewidmet werden. Überprüfen Sie das Verhalten der Anwendung, wenn der interne Speicher voll ist, wenn ein Schreibvorgang unerwartet unterbrochen wird (App-Absturz, eingehender Anruf) und bei der Wiederherstellung aus einem iOS-Backup. In jedem dieser Szenarien müssen die Daten konsistent bleiben oder auf den letzten stabilen Zustand zurückgesetzt werden. Verwenden Sie Transaktionsdateien: Schreiben Sie Daten in eine temporäre Datei und benennen Sie sie dann atomar in die Ziel-Datei um. Dies verhindert das Lesen beschädigter Daten bei einem Schreibfehler.

Vergessen Sie nicht die Benutzerkontrolle. Stellen Sie in den App-Einstellungen eine Option zum Löschen temporärer Daten und zur Anzeige des belegten internen Speichervolumens bereit. Laut Google Play Console erhalten Apps mit dieser Funktion 18 % mehr positive Bewertungen in der Kategorie «Leistung».

Häufig gestellte Fragen

Was passiert mit dem Internal Storage nach der Deinstallation der App?

Alle Daten aus dem internen Speicher der App werden vollständig gelöscht. Das Betriebssystem garantiert, dass keine Restdateien, einschließlich Datenbanken, Einstellungen und temporärer Dateien, zurückbleiben. Daten auf dem externen Speicher können erhalten bleiben.

Kann eine andere App meine Dateien aus dem Internal Storage lesen?

Ohne Root-Zugriff auf das Gerät können andere Apps keine Dateien aus dem Internal Storage einer anderen App lesen. Unter Android sind dafür Superuser-Rechte erforderlich, während unter iOS die Isolierung auf Kernel-Ebene durch Sandbox gewährleistet wird.

Welche maximale Datenmenge kann im internen Speicher gespeichert werden?

Es gibt keine explizite Grenze, aber das Gesamtvolumen ist durch den verfügbaren Speicherplatz auf der /data-Partition begrenzt. Es wird empfohlen, 100 MB pro Anwendung nicht zu überschreiten — größere Mengen sollten auf externem Speicher oder in der Cloud abgelegt werden.

Was ist der Unterschied zwischen filesDir und cacheDir unter Android?

filesDir ist für dauerhafte App-Daten vorgesehen und wird vom System nur bei Bedarf gelöscht. cacheDir ist für temporäre Dateien, die das System bei Speicherknappheit löschen kann. Das System garantiert nicht die Beständigkeit von cacheDir.

Wie übertrage ich Daten vom Internal Storage auf eine SD-Karte?

Das direkte Kopieren vom Internal Storage auf eine SD-Karte ist aus Sicherheitsgründen untersagt. Verwenden Sie die MediaStore-API unter Android 10+ oder SAF (Storage Access Framework), um mit Zustimmung des Benutzers Kopien der Daten im gemeinsam genutzten Speicher zu erstellen.

Zusammenfassung

  • Internal Storage — isoliertes Verzeichnis jeder Anwendung, geschützt vor Zugriff durch andere Programme und den Benutzer
  • Sandbox-Architektur unter Android und iOS stellt sicher, dass sich Daten verschiedener Apps nicht überschneiden und ohne Root-Zugriff nicht gelesen werden können
  • Die Wahl der Speichermethode hängt vom Datentyp ab: Dateien über filesDir, Einstellungen über DataStore, strukturierte Daten über Room
  • iOS Sandbox enthält eine Sicherungsrichtlinie, die für nicht-kritische Daten über das Attribut isExcludedFromBackup gesteuert werden muss
  • Unterschied zum Cache liegt in der Beständigkeitsgarantie: Internal Storage wird vom System nicht gelöscht, im Gegensatz zu cacheDir, das bei Speicherknappheit geleert werden kann
  • Empfohlenes Datenvolumen im internen Speicher — bis zu 100 MB. Größere Dateien sollten auf externem Speicher oder in einem Cloud-Dienst abgelegt werden
  • Benutzerkontrolle über belegten Speicherplatz und die Möglichkeit der Datenbereinigung erhöhen Vertrauen und App-Bewertungen in den Stores

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch