Ist es eine gute Praxis, ein Activity
in Android neu zu laden ?
Was wäre der beste Weg, dies zu tun? this.finish
und dann this.startActivity
mit der Aktivität Intent
?
android
android-activity
hpique
quelle
quelle
Antworten:
Sie können einfach verwenden
ein
Activity
aus sich heraus erfrischen .quelle
Für diejenigen, die dieses Blinken nach der Methode recreate () nicht sehen möchten, verwenden Sie einfach
quelle
Dies ist, was ich tue, um die Aktivität nach dem Ändern nach einer Änderung der Einstellungen neu zu laden.
Dies bewirkt im Wesentlichen, dass sich die Aktivität selbst neu zeichnet.
Aktualisiert: Ein besserer Weg, dies zu tun, ist das Aufrufen der
recreate()
Methode. Dadurch wird die Aktivität neu erstellt.quelle
Ich habe frühere Antworten gesehen, die zum erneuten Laden der Aktivität mit Intent gegeben wurden. Diese funktionieren, aber Sie können dasselbe auch mit der Methode recreate () tun, die in der Aktivitätsklasse selbst angegeben ist.
Anstatt dies zu schreiben
// Hauptaktivität beim Schließen des Dialogfelds aktualisieren
Dies kann nur durch Schreiben erfolgen
quelle
recreate()
war die Lösung für mich - "Neustart" der Aktivität funktionierte nicht für mich, da ich die Aktivität mit "StartActivityForResult" gestartet habe und das Verhalten dadurch unterbrochen wurde.einfach benutzen
Dadurch wird die onCreate-Methode in der Aktivität ausgelöst
quelle
Ich musste schnell eine Nachrichtenliste in einer meiner Anwendungen aktualisieren, daher habe ich nur eine Aktualisierung meiner Hauptbenutzeroberflächenaktivität durchgeführt, bevor ich den Dialog geschlossen habe, in dem ich mich befand. Ich bin sicher, dass es auch bessere Möglichkeiten gibt, dies zu erreichen.
quelle
Android enthält ein Prozessmanagementsystem, das die Erstellung und Zerstörung von Aktivitäten übernimmt und den Nutzen eines manuellen Neustarts einer Aktivität weitgehend zunichte macht. Weitere Informationen dazu finden Sie unter Anwendungsgrundlagen
Es empfiehlt sich jedoch sicherzustellen, dass Ihre Methoden onPause und onStop alle Ressourcen freigeben, an denen Sie nicht festhalten müssen, und onLowMemory verwenden , um die Anforderungen Ihrer Aktivitäten auf ein absolutes Minimum zu reduzieren.
quelle
Beginnen Sie mit der gleichen Absicht
activity
und schließen Sie dieactivity
.quelle
In einigen Fällen ist es die beste Vorgehensweise, in anderen Fällen ist es keine gute Idee, dass es kontextabhängig ist, wenn Sie sich dafür entscheiden. Der folgende Weg ist der beste Weg, um von einer Aktivität zu ihren Söhnen überzugehen:
Die Sache ist, wann immer Sie () von activityIWishToRun beenden, kehren Sie zu Ihrer lebenden Aktivität zurück
quelle
Das Nachladen Ihrer gesamten Aktivität kann eine schwere Aufgabe sein. Fügen Sie einfach den Teil des Codes ein, der aktualisiert werden muss ( kotlin ):
Java:
Und rufen Sie bei Bedarf " onResume () " auf.
quelle
Ich denke nicht, dass das eine gute Idee ist ... es wäre besser, eine sauberere Methode zu implementieren. Wenn Ihre Aktivität beispielsweise ein Formular enthält, kann die Cleaner-Methode einfach jedes Widget im Formular löschen und alle temporären Daten löschen. Ich denke, das ist es, was Sie wollen: Stellen Sie die Aktivität in ihren ursprünglichen Zustand zurück.
quelle
Nachdem ich eine Weile damit experimentiert habe, habe ich keine unerwarteten Konsequenzen beim Neustart einer Aktivität festgestellt. Ich glaube auch, dass dies sehr ähnlich zu dem ist, was Android standardmäßig tut, wenn sich die Ausrichtung ändert, daher sehe ich keinen Grund, dies unter ähnlichen Umständen nicht zu tun.
quelle
Ich habe das gleiche Problem
Dieser Code funktioniert für mich. Android API 17
quelle
In einer Aktivität können Sie aufrufen
recreate()
, um die Aktivität "neu zu erstellen" (API 11+).quelle
Ich hatte einen anderen Ansatz wie: Die Einstellung
launchMode
meiner Aktivität aufsingleTop
und ohne Anruffinish()
,startActivity(getIntent())
wird einfach den Job machen. Sie müssen sich nur um die neuen Daten inonCreate()
und kümmernonNewIntent
. Auf Sushs Art kann die Anwendung blinken, wie AMAN SINGH sagte. Aber AMAN SINGHs Ansatz wird immer noch eine neue Aktivität schaffen, die irgendwie unnötig ist, selbst wenn er das "Blink" -Problem behoben hat, denke ich.Für diese Frage zu spät, aber wenn jemand nach einer Lösung sucht, ist sie hier.
quelle
Nach dem Login hatte ich das gleiche Problem, also habe ich verwendet
quelle
Ich habe dies verwendet und es funktioniert gut ohne
finish()
quelle
Für mich funktioniert es, es werden keine weiteren Absichten erstellt und auf diese Weise werden die neuen Daten der Absichten geladen.
quelle