#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
}
Вы можете узнать больше об архитектурных компонентах в этом приложении.