Gibt es einen Weg in Android, um Objekte an einem Ort zu speichern, wo sie durch verschiedene Aktivitäten der gleichen Anwendung zugegriffen werden können? Ohne das Objekt zu serialisieren oder zu packen?Android Speichern von Daten zur Anwendung
Antwort
SharedPreferences
ist der Weg zu gehen. Setzen Sie dies in die Aktivität
public void saveSetting(String settingName, String value){
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
Editor ed = pref.edit();
ed.putString(settingName, value);
ed.commit();
}
SharedPreference ist nur gut für Objekte, die SharedPreferences unterstützt. Für beliebige langfristige Lagerung von Objekten müssen Sie die serialisierte Route von irgendeiner Art gehen. Ich schätze, Sie haben die Data Storage page in the docs gelesen. Von dort würde ich Ihnen empfehlen, über Internal Storage zu lesen. Wenn Sie sich nicht mit der serialisierbaren Schnittstelle von Java beschäftigen wollen, dann empfehlen wir Ihnen, sich XStream anzuschauen.
XStream in Verbindung mit internem Speicher bietet möglicherweise die Lösung, die Sie benötigen.
Wenn Sie nach einem Punkt der Dauerhaftigkeit der Suche nach einem globalen Anwendungszustand ohne Verwendung von Serialisierung, Datenbanken usw. beibehalten wird, verwenden, um einen Dienst oder die Anwendungsklasse. Allgemeine Tipps zu diesem Problem gefunden unter android developers.
Die 2 besten Möglichkeiten für die Übergabe von Objekten zwischen Aktivitäten ist die Verwendung eines statischen Feldes wahrscheinlich in einer Klasse, die Application
erweitert oder (wahrscheinlich bevorzugt) einen Dienst verwendet und Ihre Aktivitäten, die Objekte freigeben müssen, an sie bindet.
Seien Sie vorsichtig bei der Verwendung von statischen Feldern in Activities
jedoch, wie sie jederzeit zerstört werden können und sind daher nicht Thread sicher und potenziell katastrophal.
Sie können SharedPreferences verwenden oder eine Singleton-Klasse erstellen. Ich habe die Singleton-Klasse verwendet, um den Lebenszyklus der Attribute zu steuern. Wenn Sie eine garantierte Persistenz wünschen, speichern Sie Daten in einer SQL-Datenbank.
Mit Singleton können Sie benutzerdefinierte Objekte speichern.
public class MySingleton {
private static final AlphResourceSet INSTANCE = new MySingleton();
private MySingleton() {}
public static MySingleton getInstance() {
return INSTANCE;
}
// all your getters/setters for your variables
}
- 1. Speichern von vielen Daten in einer Anwendung
- 2. Speichern von Daten für eine Android-Anwendung mit Eclipse
- 3. Speichern von Daten aus einer C# -Anwendung
- 4. Speichern von Daten in mehreren Android-Aktivitäten
- 5. wie Login-Daten von Android-App speichern?
- 6. Android App Daten speichern
- 7. Android - Sicherheit beim Speichern von Daten
- 8. Android Speichern von Daten auf Button
- 9. Statische Daten in Android speichern - benutzerdefinierte Ressource?
- 10. Android-Fragmente, die Daten speichern
- 11. Speichern und Speichern von Aktivitäten in Android
- 12. Speichern von XML-Daten zur Verwendung mit einem Add-In
- 13. Speicherort in Android-App zur Installationszeit speichern
- 14. Speichern von Daten für Android- und Windows-Anwendungen
- 15. Speichern von gespeicherten Daten im Viewpart in der RCP-Anwendung
- 16. Daten von einer JavaFX-Anwendung ohne Datenbank speichern
- 17. Speichern xamlx zur Laufzeit
- 18. Alternativen zur Web-Anwendung?
- 19. Holen Android API-Ebene von Telefon zur Zeit meine Anwendung
- 20. Speichern von Daten iphone
- 21. Python Speichern von Daten
- 22. Vuejs Speichern von Daten
- 23. Powershell: Speichern von Daten
- 24. Android - Speichern der IDs von Fotos nach einer Abfrage und Speichern von Daten in einer Datenbank
- 25. Vorschläge zum Speichern von Daten
- 26. Android speichern Anwendungskontext
- 27. Daten zur Haupttätigkeit nicht Speichern/Laden richtig mit SharedPreferences
- 28. Android - Parcelierbare Daten in eine Datei speichern
- 29. Facebook-Kommunikation zur Anwendung
- 30. Android Java Sharedpreferences keine Daten speichern
Ich möchte Objekte übergeben, die ich selbst erstellt habe. Soweit ich sehe SharedPreferences nur mit Buildin-Typen arbeiten. – Christian
Serialisieren Sie es in eine Zeichenfolge, möglicherweise mithilfe von JSONObject. – Aliostad
Aliostad spricht die Wahrheit. Beißen Sie die Kugel und serialisieren Sie Ihre Objekte. Auf die eine oder andere Weise müssen Sie dies tun, um Ihre Daten zu speichern. –