Android\Java CountDownLatch块句柄HTTP响应

Android\Java CountDownLatch块句柄HTTP响应,java,android,multithreading,Java,Android,Multithreading,我有一个线程将请求发送到服务器并处理来自服务器的请求 当我在线程中使用倒计时闩锁时,我遇到了一个问题 怎么了? 当我发送请求时,我会稍后执行latch.wait,并尝试在从服务器获得请求后执行latch.countDown,但我认为当响应到来时,侦听器中不会调用它,因为主线程被阻塞。 我将用下面的图片解释我的问题: 那么我该如何解决这个问题,或者可能存在另一种方法来处理这个问题呢?首先,阻止主线程是一种非常糟糕的做法,因为您的UI会变得无响应,您应该尽量避免这种情况 一个简单的解决方案可能是使用

我有一个线程将请求发送到服务器并处理来自服务器的请求

当我在线程中使用倒计时闩锁时,我遇到了一个问题

怎么了? 当我发送请求时,我会稍后执行latch.wait,并尝试在从服务器获得请求后执行latch.countDown,但我认为当响应到来时,侦听器中不会调用它,因为主线程被阻塞。 我将用下面的图片解释我的问题:


那么我该如何解决这个问题,或者可能存在另一种方法来处理这个问题呢?

首先,阻止主线程是一种非常糟糕的做法,因为您的UI会变得无响应,您应该尽量避免这种情况

一个简单的解决方案可能是使用,如果您阅读了文档,它会为您处理执行流,将结果从工作线程传递到UI线程

如果您不需要直接影响设备UI的结果,可以使用

即使使用闩锁,也肯定有其他可用的解决方案,但一般规则应为:

避免在主线程上进行繁重的操作 避免阻塞主线程上的操作
跳过图片。给我们代码。我使用异步任务。这是奇怪的行为。调用请求在doInBackground方法中处理。