Frage

sollten Sie Daten über einen Cursor und geben Sie die Daten auf dem Bildschirm, wie die Fenstertitel Einstellung in onStart() oder onResume()?

onStart() würde den logischen Ort erscheinen, weil nach onStart() kann die Aktivität bereits angezeigt , wenn auch im Hintergrund. Vor allem war ich ein Problem mit einem mit verwalteten dialog , das hat mich dies überdenken. Wenn der Benutzer den Bildschirm dreht, während der Dialog noch geöffnet ist, onCreateDialog() und onPrepareDialog() genannt zwischen onStart() und onResume(). Wenn die Dialog Bedürfnisse auf der Grundlage der Daten werden muß, um die Daten vor onResume() haben.

Wenn ich über onStart() richtig bin dann warum das Notepad Beispiel ein schlechtes Beispiel geben, indem es in onResume() tun? Siehe http://developer.android. com / resources / samples / Notizbuch / src / com / example / android / Notizblock / NoteEditor.html NoteEditor.java Linie 176 (title = mCursor.getString...).

Auch was ist, wenn meine Aktivität startet eine weitere actvity / Dialog, der die Daten meiner Cursor ändert verfolgt. Selbst im einfachsten Fall, heißt das, dass ich manuell Update meinem vorherigen Bildschirm (ein Zuhörer für einen Dialog in der Haupttätigkeit) oder alternativ, dass ich seit ich ein ContentObserver, registrieren‘ m nicht mehr die Daten in onResume Aktualisierung () (obwohl ich es zweimal natürlich aktualisieren könnte)? ??

Ich weiß, es ist eine grundlegende Frage, aber der Dialog erst vor kurzem zu meiner Überraschung, hat mich dies zu realisieren.

War es hilfreich?

Lösung

Um Ihre Frage zu beantworten NoteEditor, nehmen Sie einfach einen Blick auf die Linien über die, die Sie zitieren, und Sie werden sehen ...

    // Requery in case something changed while paused (such as the title)
    mCursor.requery();

Der Kommentar scheint alles zu erklären. Obwohl ich nicht durch das Notizbuch Beispiel selbst gegangen bin, erscheint es den Autor (en) in der Fähigkeit, den Aufbau von Änderungen zu erholen, während der NoteEditor angehalten (und dann wieder aufgenommen).

Wie GSree erklärt (während ich dies Eingabe), gibt es keine richtige oder falsche Antwort, und es hängt einfach auf das, was muss, an welcher Stelle des Activity-Lebenszyklus zu tun.

Andere Tipps

Auch hier hängt die Lösung auf was zu Ihnen passt.

Wenn Sie den Cursor wollen einmal pro Anwendung vorgefüllt werden (und nicht über jede Änderung gestört, dann können Sie es in onCreate tun (). Diese Methode wird nur aufgerufen werden, wenn die App Prozess abgebrochen wird und App wieder eingeleitet wird .

Wenn Sie den Cursor wollen Vorkonfektionierte jedes Mal die sichtbaren Lebenszeit beginnt (den meisten Fällen ein Dienst sein / Broadcast Ihre Aktivität ruft, sollten Sie onStart ()

Wenn Sie die Cursor wollen für jeden Vordergrund lifecyle Tätigkeits vorbelegt werden, sollten Sie onResume () verwenden. Also, wenn Sie ein Dialogfeld oder eine andere Teilaktivität haben einige Informationen zu modifizieren und damit wollen Sie den Cursor neu zu laden, ist es am besten Sie tun dies in onResume (). Der Nachteil dieser Methode ist, jedes Mal wenn die Aktivität im Vordergrund geht der Cursor neu geladen wird.

Hope Dies macht deutlich,

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top