2012-06-26 5 views
6

In Android, was ist der Unterschied zwischen externem Speicher, der nicht entfernbar ist (intern) und dem internen Speicher? Ich bin mir nicht sicher, wo ich meine Daten speichern soll. Ich muss nur ein Spiel Statistiken speichern, die eine Person zu jeder Zeit ziehen können sieextern-interner Speicher

wollen

Danke

Antwort

13

In vielen neueren Geräten gibt es keine physische Unterscheidung mehr, mit "internen" und "externen" Speicher teilen die gleichen Flash-Chips ohne notwendigerweise sogar feste Zuordnung, so bleibt der Unterschied wirklich eines der beabsichtigten Zugang Paradigma.

Dateien auf dem externen Speicher (real oder simulated) werden unvermeidlich mit allem geteilt und durch irgendwas mit dieser manifesten Berechtigung modifizierbar. Herkömmlicherweise sind sie gut sichtbar, obwohl bei den neuesten MTP-Zugangsgeräten das System möglicherweise über sie informiert werden muss, bevor ein verbundener PC sie sehen kann.

Im Gegensatz dazu sind Dateien im internen Speicher für eine Anwendung privat, mit Ausnahme von allem, das als Root oder System ausgeführt wird, oder wenn die Anwendung entschieden hat, sie allgemein sichtbar oder änderbar zu machen. Selbst wenn sie zugänglich sind, können Daten auf dem internen Speicher schwieriger außerhalb der eigenen App zugänglich sein - sie werden nicht von den verbraucherbezogenen USB-Massenspeicher- oder MTP-Mechanismen unterstützt und selbst für andere Apps und Entwicklungstools ist es schwierig, sie zu finden wissen Sie, wo Sie suchen müssen, da Sie zwar Ordner einsehen können, die von den Anwendungen freigegeben wurden, aber nicht durch die übergeordneten Ordner (normalerweise/data oder/data/app). Es kann ein wenig frustrierend, auch für den Entwickler einer App, die Dateien zuzugreifen es während des Debuggens (obwohl während der apk auf private Lagerhaltung schafft, ist debug es mit der Lauf als Werkzeug und adb möglich ist, oder Sie können eine Exportfähigkeit bauen in der App oder auf dem Emulator ausführen, wo adb root hat).

Wahrscheinlich sollte Ihr Entscheidungsprozess in etwa so aussehen: Soll es privat für die besitzende Anwendung sein? Wenn ja, legte es auf den internen Speicher, es sei denn, es zu groß ist und bei älteren Geräten gezielt, wobei in diesem Fall müssen Sie möglicherweise verschlüsseln und/oder melden Sie sich für den Schutz vor auf dem externen Speicher platzieren. Andernfalls muss, wenn es gemeint ist geteilt werden, um beliebige andere Komponenten (E-Mail-App, etc.) übergeben werden, oder ist groß, legt es auf dem externen Speicher.

+0

Perfekt. Danke für die ausführliche Antwort. Ich nehme an, dass jedes Gerät ein externes Speicherrecht hat? Ich meine, ich muss mir keine Sorgen darüber machen, dass ich keinen externen Speicher habe und mein Speichermechanismus versagt – Snake

+0

Nein, Sie können nicht davon ausgehen, dass jedes Gerät über einen externen Speicher verfügt. Jedes Gerät mit dem Android Market sollte ursprünglich einen haben, aber eine herausnehmbare SD-Karte könnte entfernt werden oder verloren gehen, und andere Geräte könnten nicht mit einem ausgeliefert werden. Noch wichtiger ist, dass bei Geräten mit USB-Massenspeichermodus Anwendungen den Zugriff auf den externen Speicher verlieren, während dieser vom PC bereitgestellt wird. Das bedeutet nicht, dass Sie arbeiten müssen, wenn kein externer Speicher vorhanden ist, aber Sie sollten sich informativ über den Benutzer beschweren, anstatt nur fehlzuschlagen. Zum Beispiel wird der Browser es ablehnen, alles ohne einen herunterzuladen. –

+0

Perfect vielen Dank für Ihre Hilfe – Snake

7

In android, was ist der Unterschied zwischen dem externen Speicher, der nicht entfernt werden kann (intern) und der interne Speicher?

Externer Speicher bedeutete nie entfernbar. Es bedeutete immer "für den Benutzer zugänglich, indem ein USB-Kabel eingesteckt und als Laufwerk auf einem Host-Computer installiert wird". Frühe Android-Geräte passiert zu externen Speicher haben, aber das war nie die Definition.

Interner Speicher ist Speicher, auf den der Benutzer nicht zugreifen kann, außer über installierte Apps (oder durch Rooten seines Geräts).

+0

Oder in einem Umfang, die Apps mit Dateieinstellungen über ADB erlauben. –

1

Weitere Chris' Antwort, wenn Sie besorgt über externen Speicher (SD-Karte), können einfach Lasten entsprechend nach oben und ziehen Sie diese jedes Mal Ihre Anwendung in der relvent Informationen überprüfen Sie nicht avilable zu sein.

Sie können so etwas wie folgt verwenden:

if(isSDPresent) 
{ 
    // SD Card is present 
    // Your code goes here, files will be located @ /mnt/sdcard/Android/data/packagename 
} 
else 
{ 
    // SD Card is not presenet 
    // files located here /data/data/packagename 
} 

Wenn Sie auf einem Emulator zu testen sind, können Sie Ihre DDMS laden und alle Dateien in den revlent Orten gespeichert finden.

Hoffe, das hilft.

Verwandte Themen