Android: Einer gegen viele Instanzen von HttpClient pro Anwendung

Bis vor kurzem, unsere app gemeinsam einen einzelnen Apache-HttpClient-Instanz mithilfe der ThreadSafeClientConnManager über die gesamte Anwendung. Der http-client-Instanz wurde gehalten von einer singleton-Klasse.

Da gefällt mir das singleton-pattern für seine zahlreichen Probleme, die ich umgestaltet werden, unsere API-accessor ein pro-thread-Objekt, aber jetzt für jeden thread (was meist bedeutet, pro-Aktivität/Dienstleistung in unserem Fall) einen neuen HttpClient-Instanz erstellt.

Es ist nicht so, dass ich Probleme haben mit diesem neuen Ansatz, aber ich habe gelesen, dass die Apache-Leute empfehlen, nur eine Instanz pro Anwendung aus performance-Gründen.

Visuell, was wir vorher Taten, war dies:

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

Nun, wir tun es:

Activity1 ... ActivityN
    |             |
    |             |
HttpClient1   HttpClientN

Wie seid Ihr dazu in Ihre Anwendungen? Wenn Sie teilen sich ein einziges HttpClient über Ihre app und möglicherweise vielen gleichzeitigen threads, wie gehst du mit Zugriff?

  • Konnte Sie null-in auf, welcher Ansatz besser ist, die erste (Singleton) oder zweite?
  • Ich verwenden den ersten Ansatz jetzt. Eine Fabrik übernimmt nur die Instanziierung einer Instanz, die dann verwendet ThreadSafeConnManager zu bewältigen gleichzeitige Anforderungen. Ich glaube, das ist, wie AndroidHttpClient (FroYo und neuer API-levels) festgelegt ist, zu. Funktioniert gut mit DI-frameworks wie Guice zu.
InformationsquelleAutor Matthias | 2009-10-23
Schreibe einen Kommentar