【问题标题】:Android - HttpClient and multi-threadingAndroid - HttpClient 和多线程
【发布时间】:2013-06-24 16:26:20
【问题描述】:

我有一个使用 apache 的 HttpClient 来获取网站的应用程序。它有 2 个线程 - UI 线程(用户可以在其中命令下载子页面)和其他线程,每隔 x 秒通过使用 HttpPost 下载它来刷新主页。 似乎存在一些同步问题(查询开始立即以套接字错误结束),当重新加载用户开始下载另一个页面时(我对两个查询使用相同的 DefaultHttpClient)。重要的是该页面需要 cookie(用户有其会话)。 我的问题是: 我应该使用一个 HttpClient 和查询队列不让它们同时发生吗? 或者也许每个线程都应该有自己的 HttpClient 并且它们应该有共同的上下文? 或者有什么其他方法可以消除这个错误?

我还想问你是否知道比 JSoup 更快的 HTML 解析器。这相当快,我同意,但也许有更好的方法?

【问题讨论】:

  • 我使用异步任务 - 问题是同步...

标签: android httpclient


【解决方案1】:

您可以通过指定线程安全客户端管理器来创建HttpClient thread safe。 (Threadsafe 是指两个或多个线程可以与其交互而不会出现上述错误消息)

http://foo.jasonhudgins.com/2009/08/http-connection-reuse-in-android.html

【讨论】:

    【解决方案2】:

    每个线程都应该有 HTTPClient。如果您正在执行任何常见任务(可能是危险的)。 为了使其线程安全,您应该将同步块放在方法级别或您有共同任务要做的地方。

    建议:在使用线程时,尽可能将任务分开。如果你有一些共同的任务,请使用同步块

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多