所有人!
我正在为我工作的公司构建一个应用程序,我们必须在后台与API进行交互,但是在运行此交互时,该交互会向我们发送一些消息,这些消息必须启用/禁用某些视图活动/片段。
我们正在使用async任务运行此交互,但是问题是:当消息来自后台线程时,我无法更新view属性。我必须使用自定义的Progress类来处理这些消息,然后更改视图属性。
在我们的应用中,我们使用的是MVVP模式,我的异步任务是从ViewModel调用的,该ViewModel负责执行业务逻辑。
但是我真正想知道的是:是否有另一种无需使用AsyncTask子类即可执行异步任务的方法?也许有些人可能会阻止我推荐使用回调方法通知消息以及函数何时结束的方法。
我知道Retrofit使用enqueue方法执行异步任务,但是我不知道如何自己实现该方法。
附言:AsyncTask子类工作正常,但我对这种实现并不满意。
答案 0 :(得分:1)
当消息来自后台线程时,为什么不能更新view属性?可以在many ways中完成。
无论如何,没有其他方法可以解决,因为I / O操作无法在GUI线程上执行,只能在某些后台线程上执行。
答案 1 :(得分:0)
您可以看一下retrofit之类的用于执行API调用的库。 另外,如果您使用的是Kotlin,则可以查看coroutines进行更通用的异步工作。