Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中的异步任务,不使用AsyncTask_Android_Asynchronous_Kotlin_Android Asynctask - Fatal编程技术网

Android中的异步任务,不使用AsyncTask

Android中的异步任务,不使用AsyncTask,android,asynchronous,kotlin,android-asynctask,Android,Asynchronous,Kotlin,Android Asynctask,各位! 我正在为我工作的公司构建一个应用程序,我们必须在后台运行一个与API的交互,但是当这个交互运行时,交互会向我们发送一些消息,这些消息必须在activity/fragment中启用/禁用某些视图 我们使用异步任务运行此交互,但问题是:当消息来自后台线程时,我无法更新视图属性。我必须使用自定义进度类来处理这些消息,然后更改视图属性 在我们的应用程序中,我们使用MVVP模式,我的异步任务是从负责执行业务逻辑的ViewModel调用的 但我真正想知道的是:有没有其他方法可以在不使用AsyncTa

各位!

我正在为我工作的公司构建一个应用程序,我们必须在后台运行一个与API的交互,但是当这个交互运行时,交互会向我们发送一些消息,这些消息必须在activity/fragment中启用/禁用某些视图

我们使用异步任务运行此交互,但问题是:当消息来自后台线程时,我无法更新视图属性。我必须使用自定义进度类来处理这些消息,然后更改视图属性

在我们的应用程序中,我们使用MVVP模式,我的异步任务是从负责执行业务逻辑的ViewModel调用的

但我真正想知道的是:有没有其他方法可以在不使用AsyncTask子类的情况下执行异步任务?也许你们中的一些人可以阻止我推荐一种使用回调来通知消息和函数结束的方法

我知道改型使用排队方法来完成异步任务,但我不知道如何自己实现


注:AsyncTask子类工作得很好,但我无法接受该实现。

您可以查看类似用于执行API调用的库。
另外,如果您正在使用kotlin,您可以查看更通用的异步工作。

当消息来自后台线程时,为什么不能更新视图属性?这可以在一个小时内完成


无论如何,没有其他出路,因为不能在GUI线程上执行I/O操作,只能在一些后台线程上执行。

您有一些选项,如
执行器
协同程序
(Kotlin)…您确定不是指mvvm(模型视图模型)模式,因为你使用viewmodels?我不喜欢有人否决一个问题,但不解释为什么。。。不是我。无论如何,您的问题不是很好,因为您假设“当消息来自后台线程时,我无法更新视图属性。”正如Alexei在回答中指出的那样,这是错误的。我计划使用协同程序,但我不明白它是如何工作的。昨天我开始学习更多关于协同程序的知识,也许我可以使用MutableLiveData#post()方法。我认为它可以使用AsyncTask子类工作。