繁体   English   中英

Android \\ Java CountDownLatch块处理HTTP响应

[英]Android\Java CountDownLatch block handle HTTP response

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

我在线程中使用CountDownLatch时遇到麻烦。

  • 麻烦什么

当我发送请求时,我稍后会做latch.await() ,并尝试从服务器获取请求后尝试使用latch.countDown() ,但是我认为当响应到来时,由于主线程被阻塞,它没有在侦听器中调用。 我将用下面的图片解释我的问题:

在此处输入图片说明

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

首先,阻塞Main线程是一个非常糟糕的做法,因为您的UI变得无响应,您绝对应该避免这种情况。

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

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

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

  • 避免在主线程上执行繁重的操作
  • 避免阻塞主线程上的操作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM