Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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相当于iOS GCD dispatch_group API_Android_Multithreading - Fatal编程技术网

Android相当于iOS GCD dispatch_group API

Android相当于iOS GCD dispatch_group API,android,multithreading,Android,Multithreading,我来自iOS的背景,对安卓系统还不熟悉 是否有一种高效快速的方法来进行相同的网络API调用,但每次在数组中存储参数时使用不同的参数。我只希望在所有网络API调用完成后返回,但我不希望循环中的任何API调用阻止循环中的其他API调用 我基本上想要这个Swift代码的等价物。基本上,在所有网络调用getData成功或失败之前,下面的函数不会返回。我将如何在Android中完成下面同样的事情 func getDataForParameters(array: NSArray) { let gro

我来自iOS的背景,对安卓系统还不熟悉

是否有一种高效快速的方法来进行相同的网络API调用,但每次在数组中存储参数时使用不同的参数。我只希望在所有网络API调用完成后返回,但我不希望循环中的任何API调用阻止循环中的其他API调用

我基本上想要这个Swift代码的等价物。基本上,在所有网络调用
getData
成功或失败之前,下面的函数不会返回。我将如何在Android中完成下面同样的事情

func getDataForParameters(array: NSArray) {
    let group = dispatch_group_create()
    for (var i = 0; i < array!.count(); i++) {
        let param = array![i]
        dispatch_group_enter(group)

        getData(param, success: {
            () in
            dispatch_group_leave(group)

            }, failure: {
                () in
                dispatch_group_leave(group)
        })
    }
    dispatch_group_wait(group, DISPATCH_TIME_FOREVER)
}
func getDataForParameters(数组:NSArray){
let group=dispatch\u group\u create()
对于(var i=0;i
实现这一点的方法有很多

  • 在使用线程的情况下,可以使用
    Thread.join()
  • 您可以使用第三方库,如
  • 您可以编写自己的事件调度器,这是一个难看的问题
  • 这也涵盖了您的问题
    Callable
    Future

  • 如果循环中的网络调用不应阻止其他网络调用,则应异步进行网络调用

    您可以使用google的volley网络库进行网络调用,并且它们异步执行。按照下面的链接截击

    如果可以实现一个计数器,该计数器在成功或失败回调时递增,则可以使用该变量确定何时返回调用方法

    由于网络调用是异步进行的,因此需要编写一个回调接口,一旦满足计数器条件,就会触发该接口,以便它向被调用的方法发送回调。你可以找到很多关于如何在Android中使用回调机制的例子。回调函数类似于IOS中的委托函数


    我希望这会有所帮助。

    您可以使用ExecutorService执行多个任务,而不阻塞其他网络调用。这些都可以工作,但RxJava是这4个建议中最好的一个