Search code examples
androidconcurrencyandroid-asynctaskandroid-jetpackandroid-viewmodel

how to make callback in android + viewModel


Hello I'm trying to use the new architecture components by jetpack. So how the AsyncTask will be deprecated, how could I do a callback in android to get the result from a background thread. without my app lag

 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)

...


Solution

  • The concept of Callback gets converted to Subscribe/Publish in terms of ViewModels. From Acvitity/Fragment, you would need to subscribe to a LiveData that exists inside the ViewModel. The changes would be notified as you are observing.

    Ex :

    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
    
    }
    

    You can learn more about Architecture Components in this app.