как выполнить обратный вызов в Android ViewModel

#android #concurrency #android-asynctask #android-jetpack #android-viewmodel

#Android #параллелизм #android-asynctask #android-jetpack #android-viewmodel

Вопрос:

Здравствуйте, я пытаюсь использовать новые компоненты архитектуры от jetpack. Итак, как AsyncTask устареет, как я мог бы выполнить обратный вызов в Android, чтобы получить результат из фонового потока. без задержки моего приложения

  public void btnConfigurarClick(View v) {
    btnConfigurar.setEnabled(false);
     myViewModel.configurar(); // do in background resulting true or false
     // how to get the result of it with a callback to set enable(true)
  

Комментарии:

1. Использование LiveData .

2. Вы можете использовать интерфейс или использовать оперативные данные, все работает нормально

Ответ №1:

Концепция обратного вызова преобразуется в Subscribe / Publish в терминах ViewModels. Из Acvitity / Fragment вам нужно будет подписаться на LiveData, который существует внутри ViewModel. Изменения будут уведомлены по мере вашего наблюдения.

Пример :

 Class SomeActivity : Activity{

    fun startObservingDataChange(){

        yourViewModel.someLiveData.observe(viewLifecycleOwner) { data ->
            // Whenever data changes in view model, you'll be notified here
            // Update to UI can be done here
        }
    }
}

Class SomeViewModel{

   // Observe to this live data in the View
   val LiveData<String> someLiveData;

   // Update happens to live data in view model

}
  

Вы можете узнать больше об архитектурных компонентах в этом приложении.