【发布时间】:2019-05-17 18:58:51
【问题描述】:
大家!
我正在为我工作的公司构建一个应用程序,我们必须在后台运行与 API 的交互,但是在此交互运行时,交互会向我们发送一些消息,这些消息必须启用/禁用某些视图活动/片段。
我们正在使用异步任务运行此交互,但问题是:当消息来自后台线程时,我无法更新视图属性。我必须使用自定义 Progress 类来处理这些消息,然后更改视图属性。
在我们的应用程序中,我们使用 MVVP 模式,我的异步任务是从一个 ViewModel 调用的,它负责执行业务逻辑。
但我真正想知道的是:是否有另一种方法可以在不使用 AsyncTask 子类的情况下执行异步任务?也许你们中的一些人可以阻止我推荐一种使用回调来通知消息以及函数何时结束的方法。
我知道 Retrofit 使用 enqueue 方法进行异步任务,但我不明白如何自己实现。
Ps.:AsyncTask 子类工作正常,但我没有与那个实现相处。
【问题讨论】:
-
您有一些选项,例如
Executers或Coroutines(Kotlin) .. -
你确定你不是指 mvvm (model-view-viewmodel) 模式,因为你使用了视图模型?
-
我不喜欢有人对问题投了反对票但没有解释原因...不是我。无论如何,您的问题不是很好,因为您假设“当消息来自后台线程时,我无法更新视图属性。”正如阿列克谢在回答中指出的那样,这是错误的。见meta.stackexchange.com/questions/66377/what-is-the-xy-problem
标签: android asynchronous kotlin android-asynctask