Android: один или несколько экземпляров HttpClient для каждого приложения
До недавнего времени наше приложение совместно использовало один экземпляр Apache HttpClient, используя ThreadSafeClientConnManager для всего приложения. Экземпляр http-клиента был проведен с помощью одноэлементного класса.
Поскольку мне не нравится шаблон singleton для его многочисленных проблем, я реорганизовал наш API-интерфейс как объект с потоком, но теперь для каждого потока (что в основном означает для каждого действия/службы в нашем случае) создается новый экземпляр HttpClient.
Не то, чтобы у меня были проблемы с этим новым подходом, но я читал, что люди Apache предлагают иметь только один экземпляр для каждого приложения по причинам производительности.
Визуально, что мы делали раньше:
HttpClient (thread safe)
|
|
/\
/ \
Activity1...ActivityN
Теперь мы делаем следующее:
Activity1 ... ActivityN
| |
| |
HttpClient1 HttpClientN
Как вы, ребята, делаете это в своих приложениях? Если вы используете один HttpClient в своем приложении и потенциально много параллельных потоков, как вы обрабатываете доступ к нему?
Ответы
Ответ 1
В двух словах:
Создайте экземпляр org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager
и используйте его при построении DefaultHttpClient.
Ссылка на источник образца:
Многопоточный доступ HttpClient
Изменить: Извините, не видел ваше редактирование перед публикацией. В этом случае нет ничего неправильного в "Синглтоне".