如何处理 Android Java 上的异步?

Posted

技术标签:

【中文标题】如何处理 Android Java 上的异步?【英文标题】:How to handle asynchronicity on Android Java? 【发布时间】:2021-05-28 14:42:04 【问题描述】:

我正在使用 OkHttp 向服务器发送 REST 请求,并且响应是异步返回的。由于 Java 主要是一种服务器端语言,因此处理异步返回的概念对我来说是模糊的。

例如,我要发送3个请求A、B和C。收到它们的全部3个返回后,我将在移动应用程序上执行操作D。

我用这样的回调做到了:

do 
    run A asynchronously; A returns;
        -> run B asynchronously; B returns 
             -> run C asynchronously; C returns 
                 -> run D synchronously;

可视化:应该是这样的:

do 
    run A asynchronously;
    run B asynchronously;
    run C asynchronously;

await (A, B, C all returned) 
    run D synchronously;

我该如何像上面那样在 javascript 上等待?

【问题讨论】:

不同的(额外的)框架使这种类型的事情变得更加可能,我不确定你是否可以只使用 Okhttp 来实现这一点,但是使用 Rxjava 你可以压缩这些操作 【参考方案1】:

我正在使用Retrofit,它使用OkHttp 使用协程怎么样?像这样的方法?

GlobalScope.launch
 responseA = async getAsynch1() 
 responseB = async getAsynch2() 
 responseC  = async getAsynch3() 
 handleResponseA(responseA.await())
 handleResponseB(responseB.await())
 handleResponseC(responseC.await())

参考:链接https://proandroiddev.com/suspend-what-youre-doing-retrofit-has-now-coroutines-support-c65bd09ba067

【讨论】:

如果 OP 使用的是 java 就没有帮助,他们说他们是

以上是关于如何处理 Android Java 上的异步?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理Android导航栏菜单键上的长按?

应用程序如何处理异步响应 - 通过回调

如何处理 com.android.volley.NoConnectionError: java.net.UnknownHostException

等待/异步如何处理未解决的承诺

android分页请求,重复数据如何处理

Angular:如何处理异步问题?