2016-05-18 8 views
0

Ich arbeite an einer einfachen to-do-Liste App, und ich versuche, Daten von/zu internen Speicher zu lesen/schreiben. Ich versuche zu verstehen, wann genau diese Lese-/Schreibmethoden aufgerufen werden sollten.Android - Speichern von Daten in einem internen Speicher

Ich weiß, dass die Aktivitätsklasse eine onCreate() Methode hat, die ein angemessener Speicherort für meine Lese-Methode sein wird, aber wo soll ich meine Schreibmethode aufrufen?

ich es nennen wollen, wenn die App geschlossen/Enden, so würde ich davon ausgehen, onDestory() ist eine gute Lage, aber ich hörte, dass onDestroy() kein guter Ort für Datenspeicheroperationen sein können, und ich sollte onStop() verwenden.

Irgendwelche Hilfe oder Ideen?

Antwort

1

die Tabelle im Android Developers Guide Im Anschluss an den Activity Lifecycle kann Ihre App nach entweder onPause() (für Pre-HONEYCOMB-Geräte) oder nach onStop() ohne Vorwarnung jederzeit durch das System getötet werden. Sie möchten Ihre Daten wahrscheinlich in diese Methoden schreiben, um sicherzustellen, dass nichts verloren geht. Für neuere Geräte (API Level 11 und höher) sollte onStop() in Ordnung sein. Wenn Ihre App auch auf älteren Geräten laufen sollte, wäre der beste Ort.

+0

Wäre es besser, aus dem Speicher in onCreate() oder onStart() zu lesen, wenn ich onStop() verwende, um die Daten zu schreiben? – baki1995

+0

Hängt davon ab. Wenn Ihre Daten extern geändert werden können, müssen Sie dies möglicherweise in 'onStart()' setzen. Andernfalls sollte 'onCreate()' in Ordnung sein. Wenn Ihre App vom System beendet wird, wird 'onCreate()' aufgerufen, wenn die App erneut aufgerufen wird. Wenn es nicht vom System gelöscht wird, sollten Ihre zuvor gelesenen Daten immer noch geladen werden, so dass Sie nicht erneut lesen müssen. (Es sei denn, die Daten werden extern geändert. In diesem Fall müssen Sie sie möglicherweise öfter als in 'onStart()' lesen, z. B. eine Benutzerschaltfläche bereitstellen oder regelmäßig nach Änderungen suchen.) – urps

1

Es hängt vom Anwendungslebenszyklus ab.

This Picture

Und This sehen.

onStop() wird aufgerufen, wenn der Benutzer die Home-Taste (Hard Key) drückt.

Und dann, wenn der Speicher nicht ausreicht oder aus einem anderen Grund, Android Memory Manager wird Ihre App Instant töten und onDestory() wird nie aufgerufen.

Das Beste, was Sie tun müssen, ist eine Schaltfläche zum Speichern von Daten. Natürlich, Include onStop() Routine speichern.

+0

Wäre es besser, aus dem Speicher zu lesen in onCreate() oder onStart(), wenn ich onStop() verwende, um die Daten zu schreiben? – baki1995

-1

Dies ist nur Beispielcode. Aber du hast die Idee. Erstellen Sie eine benutzerdefinierte Methode, die den folgenden Code implementiert, und rufen Sie sie bei einigen Ereignissen wie "onClick" oder einem anderen auf.

File file; 
    FileOutputStream strem = null; 
    String line = "Hey this is my name"; 
    try { 
     file = new File("sdcard/newFile.txt"); 
     strem = new FileOutputStream(file); 
     byte[] bytes = line.getBytes(); 
     strem.write(bytes); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      strem.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    }