如何在android + viewModel中进行回调

Posted

技术标签:

【中文标题】如何在android + viewModel中进行回调【英文标题】:how to make callback in android + viewModel 【发布时间】:2020-12-29 14:26:28 【问题描述】:

您好,我正在尝试使用 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)

...

【问题讨论】:

使用LiveData 您可以使用界面或使用实时数据,都可以正常工作 【参考方案1】:

就 ViewModel 而言,回调的概念被转换为订阅/发布。 从 Activity/Fragment 中,您需要订阅 ViewModel 中存在的LiveData。 更改将在您观察时收到通知。

例如:

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


您可以在this app 中了解有关架构组件的更多信息。

【讨论】:

以上是关于如何在android + viewModel中进行回调的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android MVVM ViewModel 中获取上下文

如何在 Android/Kotlin App 上通过 Koin 注入在 BaseActivity 中初始化/注入通用 ViewModel

我应该如何在 Android 的 viewModel 中获取 Resources(R.string)(MVVM 和数据绑定)

Android Compose MVVM - 如何在不带参数的可组合函数中引用 viewModel 对象?

使用数据绑定时如何在适配器中绑定 viewModel

Android 架构组件 之 ViewModel 学习