Bis vor kurzem hat unsere Anwendung eine einzige Apache HttpClient-Instanz mit dem ThreadSafeClientConnManager für die gesamte Anwendung freigegeben. Die Http-Client-Instanz wurde von einer Singleton-Klasse gehalten.
Da ich das Singleton-Muster wegen seiner zahlreichen Probleme nicht mag, habe ich unseren API-Zugriff auf ein Pro-Thread-Objekt umgestellt, aber jetzt wird für jeden Thread (was in unserem Fall meist pro Aktivität/Dienst bedeutet) eine neue HttpClient-Instanz erstellt.
Es ist nicht so, dass ich Probleme mit diesem neuen Ansatz habe, aber ich habe gelesen, dass die Apache-Leute vorschlagen, aus Leistungsgründen nur eine Instanz pro Anwendung zu haben.
Was wir vorher gemacht haben, war folgendes:
HttpClient (thread safe)
|
|
/\
/ \
Activity1...ActivityN
Jetzt tun wir dies:
Activity1 ... ActivityN
| |
| |
HttpClient1 HttpClientN
Wie macht ihr das in euren Bewerbungen? Wenn Sie einen einzigen HttpClient über Ihre App und potenziell viele gleichzeitige Threads teilen, wie behandeln Sie den Zugriff darauf?