Cho đến gần đây, ứng dụng của chúng tôi đã chia sẻ một cá thể Apache HttpClient duy nhất sử dụng ThreadSafeClientConnManager trên toàn bộ ứng dụng. Ví dụ ứng dụng khách http được tổ chức bởi một lớp đơn.Android: Một hoặc nhiều phiên bản của HttpClient cho mỗi ứng dụng
Vì tôi không thích mẫu đơn cho nhiều vấn đề, tôi đã tái cấu trúc API accessor thành một đối tượng cho mỗi luồng, nhưng bây giờ cho mỗi thread (chủ yếu là mỗi Activity/Service trong trường hợp của chúng ta) tạo.
Nó không phải là tôi có vấn đề với cách tiếp cận mới này, nhưng tôi đã đọc rằng các folks Apache đề nghị chỉ có một ví dụ cho mỗi ứng dụng vì lý do hiệu suất.
Nhìn bề ngoài, những gì chúng ta đã làm trước được điều này:
HttpClient (thread safe)
|
|
/\
/\
Activity1...ActivityN
Bây giờ, chúng ta làm điều này:
Activity1 ... ActivityN
| |
| |
HttpClient1 HttpClientN
Làm thế nào để các bạn thực hiện điều này trong các ứng dụng của bạn? Nếu bạn chia sẻ một HttpClient duy nhất trên ứng dụng của mình và có thể có nhiều chuỗi đồng thời, bạn làm cách nào để xử lý quyền truy cập vào nó?
Bạn có thể không tham gia vào cách tiếp cận nào tốt hơn phương pháp đầu tiên (Singleton) hoặc phương pháp thứ hai không? –
Tôi sử dụng phương pháp đầu tiên ngay bây giờ. Một nhà máy chỉ quan tâm đến một cá thể, sau đó sử dụng ThreadSafeConnManager để đối phó với các yêu cầu đồng thời. Tôi tin rằng đó là cách AndroidHttpClient (cấp độ FroYo và API mới hơn) được thiết lập. Hoạt động tốt với các khung công tác DI như Guice. – Matthias