Dieser Android-Kurztipp führt Sie in die verschiedenen Datenspeicherungsoptionen ein, die auf der Android-Plattform verfügbar sind. Ein kurzer praktischer Überblick mit Überlegungen für jede Speicheroption wird ebenfalls bereitgestellt.
Wenn Sie Android-Anwendungen entwickeln, haben Sie verschiedene Möglichkeiten, wie Sie Ihre Daten speichern und verwalten. Je nach App können Sie mehr als eine davon für verschiedene Datenaufgaben verwenden.
Sie können Datenelemente im internen Speicher auf den Geräten Ihrer Benutzer speichern. Dies hat den Vorteil, dass keine externen Medien benötigt werden, der Nachteil besteht jedoch darin, dass bei einigen Geräten extrem wenig Speicherplatz zur Verfügung steht. Das Speichern im internen Speicher bedeutet im Wesentlichen das Speichern von Datendateien in der internen Verzeichnisstruktur des Geräts.
Der folgende Java-Code demonstriert das Öffnen einer Datei für die Datenausgabe:
// Abrufen eines FileOutputStream-Objekts durch Übergeben des Dateinamens FileOutputStream dataFileOutput = openFileOutput ("datafile", Context.MODE_PRIVATE);
Wenn Sie Dateien im internen Speicher speichern, können andere Anwendungen nicht darauf zugreifen. Standardmäßig ist dies auch für den Benutzer nicht möglich, sodass eine hohe Zuverlässigkeit gewährleistet ist. Die FileOutputStream-Schreibmethode benötigt Byte-Parameter. Sie können diese Technik nur zum Speichern von Datenelementen verwenden, die Ihr Programm in Byte konvertieren kann.
Viele Android-Benutzer sind aufgrund unzureichenden internen Speichers auf externe Speichermedien wie SD-Karten angewiesen. SD-Karten bieten Ihren Apps mehr Speicherplatz, erfordern jedoch zusätzliche Überlegungen. Sie können beispielsweise nicht davon ausgehen, dass ein Benutzer über eine SD-Karte oder eine andere externe Medienressource verfügt. Aus diesem Grund muss Ihr Programmiercode überprüft werden, bevor Daten auf diese Weise gespeichert werden. Sie müssen auch die Möglichkeit berücksichtigen, dass der Benutzer seine SD-Karte ändert.
Mit der Environment-Klasse können Ihre Apps die Verfügbarkeit von beschreibbarem externen Speicher wie folgt prüfen:
if (Environment.getExternalStorageState (). equals (Environment.MEDIA_MOUNTED)) // kann den externen Speicher verwenden
Beachten Sie auch, dass auf einer SD-Karte gespeicherte Dateien von anderen Apps und vom Benutzer direkt abgerufen werden können, so dass die Daten anfälliger für Korruption sind.
Wenn Ihre App komplexere Datenelemente verwendet, können Sie eine SQLite-Datenbank erstellen, um sie mithilfe des relationalen Modells zu speichern. Wenn Sie eine SQLite-Datenbank für Ihre App erstellen, können Sie von jedem beliebigen Punkt in Ihrem Java-Code aus darauf zugreifen, und Sie können von keiner anderen Stelle darauf zugreifen. Die Verwendung einer Datenbank bietet viele Vorteile, z. B. die Möglichkeit, strukturierte Abfragen zu speichern und auszuführen.
Um eine benutzerdefinierte SQLite-Datenbank aus Ihrem Java-Code zu erstellen, können Sie die SQLiteOpenHelper-Klasse erweitern und anschließend Ihre Tabellen in der "onCreate" -Methode wie folgt definieren und erstellen:
public void onCreate (SQLiteDatabase db) db.execSQL ("CREATE TABLE-Element (ItemID INTEGER, ItemName TEXT);");
Diese Anweisung erstellt eine Datenbanktabelle mit zwei Spalten. Mit der SQLiteDatabase-Klasse können Sie die Daten einschließlich Abfrage-, Einfüge- und Aktualisierungsmethoden verwalten. Ein potenzieller Nachteil der Verwendung einer SQLite-Datenbank in Ihren Android-Apps ist der erforderliche Verarbeitungscode und die erforderlichen Fähigkeiten. Wenn Sie sich bereits mit SQL auskennen, sollten Sie keine Probleme haben.
Wenn Sie einfache Datenelemente für Ihre Apps speichern müssen, verwenden Sie die gemeinsamen Einstellungen am einfachsten. Dies ist möglicherweise die am einfachsten zu implementierende Datenverwaltungsoption, eignet sich jedoch nur für Elemente des primitiven Typs wie Zahlen und Text. Mit den gemeinsamen Einstellungen modellieren Sie Ihre Datenelemente als Schlüsselwertpaare. Der folgende Code veranschaulicht, wie Sie für eine App einen Verweis auf das SharedPreferences-Objekt abrufen und einen Wert in diese schreiben:
// Abrufen der Voreinstellungen, dann des Editors, Festlegen eines Datenelements SharedPreferences appPrefs = getSharedPreferences ("MyAppPrefs", 0); SharedPreferences.Editor prefsEd = appPrefs.edit (); prefsEd.putString ("dataString", "einige Zeichenfolgendaten"); prefsEd.commit ();
Alles, was Sie in den gemeinsamen Einstellungen speichern, ist bei der nächsten Ausführung Ihrer App weiterhin verfügbar. Daher können Sie hier Elemente wie Benutzereinstellungen und Einstellungen speichern. Beim Start Ihrer App können Sie die gemeinsamen Einstellungen überprüfen und dann Ihre Benutzeroberfläche und Funktionalität entsprechend präsentieren. Der folgende Code demonstriert das Abrufen des String-Datenelements:
// Abrufen der Einstellungen und Abrufen der gespeicherten Daten unter Angabe eines Standardwerts SharedPreferences appPrefs = getSharedPreferences ("MyAppPrefs", 0); String savedData = appPrefs.getString ("dataString", "");
Da Android-Geräte über eine Internetverbindung verfügen, können Ihre Apps natürlich die im Web gespeicherten Daten verwenden. Natürlich müssen Sie überlegen, wie Ihre Anwendungen mit eingeschränkter oder fehlender Konnektivität umgehen. Wie bei einer Webanwendung können Sie mit dieser Option Daten auf praktisch jeder gewünschten Plattform oder Modell speichern. Die Java-Sprache profitiert auch von einer Reihe von Standardbibliotheken für die Verarbeitung von Daten, die über ein Netzwerk abgerufen werden, aus Quellen wie SQL-Datenbanken und XML-Dokumenten. Die Pakete java.net und android.net bieten Klassen zur Verwaltung von Netzwerkdaten.
Wenn Sie in Eclipse entwickeln, können Sie Aspekte der Datenspeicherung auf virtuellen Geräten in der DDMS-Perspektive manuell steuern.
Sie müssen Ihren Datenverwaltungsansatz zwangsläufig an Ihre eigenen Android-Entwicklungsprojekte anpassen. Die Plattform ist flexibel, so dass eine große Auswahl zur Verfügung steht. Wenn Sie die Datenverwaltung in Ihren Apps implementieren, stellen Sie sicher, dass Sie diese auf den tatsächlichen Geräten sowie im Emulator testen, da das Fehlerpotenzial größer ist, wenn Benutzer auf ihre Funktionalität in ihren eigenen eindeutigen Kontexten zugreifen.
Sue Smith
Ich bin Web- / Software-Entwickler und technischer / Comedy-Autor. Weitere Informationen finden Sie unter BeNormal.info. Die Nonsense-Apps sind mein erster Versuch in der Android-Entwicklung. Ich habe für viele verschiedene Kunden geschrieben, darunter auch das Smashing Magazine. Meine eigenen Websites beinhalten das BrainDeadAir-Magazin für Parodie. Folgen Sie mir auf Twitter @BrainDeadAir oder senden Sie mir eine E-Mail an [email protected].