Nhìn vào viễn cảnh của Volley ở đây là một số lợi thế cho yêu cầu của bạn:
Volley, một mặt, hoàn toàn tập trung vào việc xử lý các yêu cầu HTTP nhỏ, riêng lẻ. Vì vậy, nếu việc xử lý yêu cầu HTTP của bạn có một số điểm kỳ quặc, Volley có thể có một cái móc cho bạn. Mặt khác, nếu bạn có một sự giải quyết trong việc xử lý hình ảnh của mình, thì cái móc thực sự duy nhất bạn có là ImageCache . "Không phải là không có gì, nhưng nó cũng không nhiều!". nhưng nó có nhiều ưu điểm khác như Khi bạn xác định yêu cầu của mình, sử dụng chúng từ bên trong một đoạn hoặc hoạt động không gây đau đớn không giống như AsyncT task song song
Ưu và nhược điểm của Volley:
Vì vậy, những gì tốt đẹp về Volley?
Phần mạng không chỉ dành cho hình ảnh. Volley được dự định là một phần không thể thiếu trong phần cuối của bạn. Đối với một dự án mới dựa trên dịch vụ REST đơn giản, đây có thể là một chiến thắng lớn.
NetworkImageView tích cực hơn trong việc dọn dẹp yêu cầu so với Picasso và thận trọng hơn trong các mẫu sử dụng GC của nó. NetworkImageView chỉ dựa hoàn toàn vào các tham chiếu bộ nhớ mạnh và dọn sạch tất cả dữ liệu yêu cầu ngay khi yêu cầu mới được đưa ra cho ImageView hoặc ngay khi ImageView di chuyển khỏi màn hình.
Hiệu suất. Bài đăng này sẽ không đánh giá khiếu nại này, nhưng rõ ràng họ đã cẩn thận để thận trọng trong các mẫu sử dụng bộ nhớ của mình. Volley cũng thực hiện một nỗ lực để gọi lại hàng loạt đến luồng chính để giảm chuyển đổi ngữ cảnh.
Volley rõ ràng cũng có tương lai. Hãy xem RequestFuture nếu bạn quan tâm.
Nếu bạn đang xử lý các hình ảnh nén có độ phân giải cao, Volley là giải pháp duy nhất ở đây hoạt động tốt.
Volley có thể được sử dụng với Okhttp (Phiên bản mới của Okhttp hỗ trợ NIO để có hiệu suất tốt hơn)
Volley chơi đẹp với vòng đời Activity.
Các vấn đề với Volley:
Vì Volley là mới, một số điều chưa được hỗ trợ, nhưng nó đã được sửa.
Yêu cầu nhiều phần (Giải pháp: https://github.com/vinaysshenoy/enhified-vcar )
Mã trạng thái 201 được coi là một lỗi, Mã trạng thái từ 200 đến 207 là phản hồi thành công ngay bây giờ. (Đã sửa: https://github.com/Vinayrraj/CustomVcar )
Cập nhật: trong bản phát hành mới nhất của Google bóng chuyền, lỗi mã trạng thái 2XX đã được khắc phục ngay bây giờ! Cảm ơn Ficus Kirkpatrick!
nó ít tài liệu hơn nhưng nhiều người đang hỗ trợ bóng chuyền trong github, java giống như tài liệu có thể được tìm thấy ở đây . Trên trang web của nhà phát triển Android, bạn có thể tìm thấy hướng dẫn Truyền dữ liệu mạng bằng cách sử dụng Volley . Và mã nguồn bóng chuyền có thể được tìm thấy tại Google Git
Để giải quyết / thay đổi Chính sách chuyển hướng của khung Volley, hãy sử dụng Volley với OkHTTP (CommonsWare đã đề cập ở trên)
Ngoài ra, bạn có thể đọc phần tải hình ảnh của Volley này với Picasso
Trang bị thêm:
Được phát hành bởi Square , Điều này cung cấp rất dễ sử dụng API REST (Cập nhật: Voila! Với sự hỗ trợ của NIO)
Ưu điểm của trang bị thêm:
So với Volley, mã API REST của Retrofit ngắn gọn và cung cấp tài liệu API tuyệt vời và có sự hỗ trợ tốt trong cộng đồng! Nó rất dễ dàng để thêm vào các dự án.
Chúng tôi có thể sử dụng nó với bất kỳ thư viện tuần tự hóa, với xử lý lỗi.
Cập nhật:
- Có rất nhiều thay đổi rất tốt trong Retrofit 2.0.0-beta2
- phiên bản 1.6 của Retrofit với OkHttp 2.0 hiện phụ thuộc vào Okio để hỗ trợ java.io và java.nio , giúp truy cập, lưu trữ và xử lý dữ liệu của bạn dễ dàng hơn bằng cách sử dụng ByteString và Buffer để thực hiện một số điều thông minh để tiết kiệm CPU và bộ nhớ. (FYI: Điều này làm tôi nhớ đến thư viện OIN của Koush với sự hỗ trợ của NIO!)
Chúng tôi có thể sử dụng Retrofit cùng với RxJava để kết hợp và xâu chuỗi các cuộc gọi REST bằng rxObservables để tránh các chuỗi gọi lại xấu xí (để tránh địa ngục gọi lại xấu xí !!) .
Nhược điểm của trang bị thêm cho phiên bản 1.6:
Chức năng xử lý lỗi liên quan đến bộ nhớ không tốt (trong các phiên bản cũ hơn của Retrofit / OkHttp) không chắc chắn liệu nó có được cải thiện với hỗ trợ Okio với Java NIO hay không.
Hỗ trợ luồng tối thiểu có thể dẫn đến gọi lại địa ngục nếu chúng ta sử dụng điều này một cách không phù hợp.
(Tất cả các Nhược điểm trên đã được giải quyết trong phiên bản Retrofit 2.0 beta mới)
================================================== ======================
Cập nhật:
Điểm chuẩn hiệu năng của Android Async vs Volley vs Retrofit (mili giây, giá trị thấp hơn là tốt hơn):
(FYI ở trên Thông tin điểm chuẩn Retrofit sẽ cải thiện với hỗ trợ java NIO vì phiên bản mới của OKhttp phụ thuộc vào thư viện NIO Okio)
Trong cả ba thử nghiệm với các lần lặp khác nhau (1 - 25 lần), Volley nhanh hơn từ 50% đến 75%. Trang bị thêm tốc độ nhanh hơn 50% đến 90% so với AsyncT Nhiệm vụ, đạt cùng điểm cuối cùng số lần. Trên bộ kiểm tra Bảng điều khiển, phần này được dịch thành tải / phân tích dữ liệu nhanh hơn vài giây. Đó là một sự khác biệt lớn trong thế giới thực. Để làm cho các bài kiểm tra công bằng, thời gian cho AsyncT task / Volley đã bao gồm phân tích cú pháp JSON như Retrofit tự động làm điều đó cho bạn.
RetroFit Thắng trong bài kiểm tra điểm chuẩn!
Cuối cùng, chúng tôi quyết định đồng hành cùng Retrofit cho ứng dụng của chúng tôi. Nó không chỉ nhanh một cách lố bịch mà còn kết hợp khá tốt với kiến trúc hiện có của chúng tôi. Chúng tôi đã có thể tạo Giao diện gọi lại cho phụ huynh, tự động thực hiện xử lý lỗi, bộ đệm và phân trang mà không cần nhiều nỗ lực cho các API của chúng tôi. Để hợp nhất trong Retrofit, chúng tôi đã phải đổi tên các biến của mình để làm cho các mô hình của chúng tôi tuân thủ GSON, viết một vài giao diện đơn giản, xóa các hàm khỏi API cũ và sửa đổi các đoạn của chúng tôi để không sử dụng AsyncT task. Bây giờ chúng tôi có một vài mảnh được chuyển đổi hoàn toàn, nó không gây đau đớn. Có một số khó khăn ngày càng tăng và các vấn đề mà chúng tôi phải khắc phục, nhưng nhìn chung nó đã diễn ra suôn sẻ. Ban đầu, chúng tôi gặp phải một số vấn đề / lỗi kỹ thuật, nhưng Square có một cộng đồng Google+ tuyệt vời có thể giúp chúng tôi vượt qua nó.
Khi nào nên sử dụng Volley?!
Chúng tôi có thể sử dụng Volley khi chúng tôi cần tải hình ảnh cũng như tiêu thụ API REST!, Hệ thống xếp hàng cuộc gọi mạng là cần thiết cho nhiều yêu cầu n / w cùng một lúc! Ngoài ra, Volley có khả năng xử lý lỗi liên quan đến bộ nhớ tốt hơn so với Retrofit!
OkHttp có thể được sử dụng với Volley, Retrofit sử dụng OkHttp theo mặc định! Nó có hỗ trợ SPDY , tổng hợp kết nối, lưu trữ đĩa, nén trong suốt! Gần đây, nó đã nhận được một số hỗ trợ của java NIO với thư viện Okio .
Nguồn, tín dụng: bóng chuyền vs trang bị thêm bởi ông Josh Ruesch
Lưu ý: Về phát trực tuyến, nó phụ thuộc vào loại phát trực tuyến bạn muốn như RTSP / RTCP.