До недавнего времени наше приложение совместно использовало один экземпляр Apache HttpClient, используя ThreadSafeClientConnManager во всем приложении. Экземпляр клиента http удерживался одноэлементным классом.
Поскольку мне не нравится шаблон синглтона из-за его многочисленных проблем, я реорганизовал наш метод доступа API в качестве объекта для каждого потока, но теперь для каждого потока (который в нашем случае означает в основном для Activity / Service) создается новый экземпляр HttpClient .
Не то чтобы у меня были проблемы с этим новым подходом, но я читал, что люди Apache предлагают иметь только один экземпляр на приложение по соображениям производительности.
Визуально то, что мы делали раньше, было так:
HttpClient (thread safe)
|
|
/\
/ \
Activity1...ActivityN
Теперь мы делаем это:
Activity1 ... ActivityN
| |
| |
HttpClient1 HttpClientN
Как вы, ребята, делаете это в своих приложениях? Если вы используете один и тот же HttpClient в своем приложении и потенциально много одновременно работающих потоков, как вы обрабатываете доступ к нему?