Android - HttpClient和多线程

时间:2013-06-24 08:04:54

标签: android httpclient

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

我还想问你是否知道比JSoup更快的HTML解析器。它很快,我同意,但也许还有更好的东西?

2 个答案:

答案 0 :(得分:4)

您可以通过指定线程安全客户端管理器来生成HttpClient thread safe。 (Threadsafe在两个或多个线程可以与之交互而不会出现上述错误消息的意义上)

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

答案 1 :(得分:0)

每个线程都应该有HTTPClient。如果你正在做任何共同的任务(可能是危险的)。 为了使线程安全,你应该在方法级别或你有共同任务的地方放置synchronized块。

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