Android:每个应用程序对应一个HttpClient实例

时间:2009-10-23 14:06:50

标签: android concurrency singleton

直到最近,我们的应用程序在整个应用程序中使用ThreadSafeClientConnManager共享一个Apache HttpClient实例。 http客户端实例由单例类保存。

由于我不喜欢单例模式存在的众多问题,我将我的API访问器重构为每线程对象,但现在对于每个线程(在我们的例子中主要是指每个Activity / Service),都会创建一个新的HttpClient实例

这并不是我在使用这种新方法时遇到问题,但我已经读过Apache人员建议每个应用只有一个实例,以提高性能。

从视觉上看,我们之前做过的是:

HttpClient (thread safe)
          |
          |
         /\
        /  \
Activity1...ActivityN

现在,我们这样做:

Activity1 ... ActivityN
    |             |
    |             |
HttpClient1   HttpClientN

你们如何在你的应用程序中执行此操作?如果您在应用程序中共享一个HttpClient,并且可能有多个并发线程,那么如何处理对它的访问?

1 个答案:

答案 0 :(得分:12)

简而言之:

创建org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager的实例,并在构造DefaultHttpClient时使用它。

示例来源链接: HttpClient multithreaded access

编辑:抱歉,在发布之前没有看到您的编辑。在这种情况下,“单身人士”没有任何内在错误。