Nach LiveData documentation:Wie LiveData gespeicherten Wert löschen?
Die Livedata-Klasse bietet die folgenden Vorteile:
...
Immer up to date Daten: Wenn ein Lifecycle wieder startet (wie eine Tätigkeit geht zurück von dem Backstack in den gestarteten Status), erhält es die neuesten Standortdaten (falls nicht schon).
Aber manchmal brauche ich diese Funktion nicht.
Zum Beispiel habe ich folgende Livedata in Ansichtsmodell und Beobachtern in Aktivität:
//LiveData
val showDialogLiveData = MutableLiveData<String>()
//Activity
viewModel.showMessageLiveData.observe(this, android.arch.lifecycle.Observer { message ->
AlertDialog.Builder(this)
.setMessage(message)
.setPositiveButton("OK") { _, _ -> }
.show()
})
nun nach jeder Drehung alter Dialog erscheint.
Gibt es eine Möglichkeit, gespeicherten Wert zu löschen, nachdem es behandelt wurde oder ist die Verwendung von LiveData überhaupt falsch?
ist dies im Zusammenhang mit: https://stackoverflow.com/questions/44146081/show-dialog-from-viewmodel-in-android-mvvm-architecture –
es auf das Live-Daten Problem im Zusammenhang Hat? Die Aktivität wird jedes Mal neu erstellt, wenn Sie gedreht haben, unabhängig davon, ob Sie LiveData verwendet haben oder nicht. Das Problem wird fortgesetzt, selbst wenn Sie es entfernen. –
@LongRanger kann durch das Löschen von Nachrichten gelöst werden, die in LiveData zwischengespeichert wurden, nachdem das Dialogfeld angezeigt wurde, sodass neue Aktivitäten es nicht empfangen können. Das gleiche Prinzip wie bei Moxys [OneExecutionStateStrategy] (https://github.com/Arello-Mobile/Moxy/wiki/View-commands-state-strategie#existing-strategies) – Kamer358