Прежде всего, поскольку вы не вызываете observeForever()
, а просто вызываете observe()
, чтобы наблюдать жизненные данные объекта, у которого есть жизненный цикл, вам, вероятно, не нужно удалять наблюдателя - это будетигнорируется / удаляется системой автоматически, когда подписчик перестает быть активным.
Однако, если вам действительно необходимо удалить наблюдателя вручную по какой-либо причине, вам придется сохранить наблюдателя в свойстве. Таким образом, позже вы сможете передать наблюдателя в качестве параметра методу removeObserver()
:
// Define your observer as a property
private val emailValidObserver = Observer<GenericResponse> { onEmailValidChanged(it) }
...
private fun onEmailValidChanged(emailValidResponse: GenericResponse) {
dismissProgressBar()
if (emailValidResponse != null && emailValidResponse.success) {
findNavController().navigate(R.id.action_navigatesomewhere)
}
}
...
// Observe the livedata with the observer you have defined
viewModel.emailValid.observe(this, emailValidObserver)
...
// Stop observing the livedata
shoppingListName.removeObserver(emailValidObserver)
С другой стороны, если в какой-то момент вы захотите удалить всех наблюдателей, связанных с вашимэкземпляр жизненного цикла, вы можете просто вызвать этот метод:
removeObservers(this)