Мутировать MutableLiveData внутри viewModelScope или нет? - PullRequest
0 голосов
/ 01 марта 2020

repository.callPermissionRemove (licenseID) - это функция приостановки, которая требует viewModelScope для вызова внутри viewModel. После вызова функции приостановки в репозитории я хотел бы вернуть MutableLiveData обратно к нулю.

Могу ли я знать, в чем разница между этими двумя наборами кода и какой из них следует реализовать?

Код A

    fun callPermissionRemove(permissionID: Int) {
        viewModelScope.launch {
            permissionRemoveAPIResponse.value = repository.callPermissionRemove(permissionID)
        }
        permissionRemoveAPIResponse.value = null
    }

Код B

    fun callPermissionRemove(permissionID: Int) {
        viewModelScope.launch {
            permissionRemoveAPIResponse.value = repository.callPermissionRemove(permissionID)
            permissionRemoveAPIResponse.value = null
        }
    }

1 Ответ

1 голос
/ 01 марта 2020

В вашем примере Code A строка, установив значение ответа в null, будет вызываться до того, как repository.callPermissionRemove() будет выполняться, тогда как в примере Code B строки будут выполняться в том же порядке, как написано .

При этом при сбросе поля MutableLiveData на ноль после использования вы можете рассмотреть возможность использования SingleLiveEvent. Пример этого вы можете найти здесь , и еще несколько объяснений того, почему и как здесь .

...