các thực hành tốt nhất để làm điều này là gì?
Điều đó phụ thuộc vào "hiện tượng" này là gì và công việc này đang được thực hiện ở đâu.
Nếu "này" là "công việc không đồng bộ", bạn sẽ sử dụng đề trong dạng này hay thời trang:
Nếu hoạt động HTTP bạn đang lái xe một giao diện người dùng, bạn có thể sử dụng AsyncTask
, vì vậy bạn có thể cập nhật UI một cách an toàn từ onPostExecute()
Nếu hoạt động HTTP của bạn là hoàn toàn ở chế độ nền, và bạn muốn làm cùng một lúc, sử dụng một IntentService
, trong đó có sợi nền riêng của mình và hàng đợi công việc
Nếu hoạt động HTTP của bạn hoàn toàn ở chế độ nền và bạn muốn làm một lúc và bạn lo lắng về việc đảm bảo thiết bị vẫn tỉnh táo trong khi tất cả điều này đang diễn ra, hãy xem xét WakefulIntentService
Nếu Các hoạt động HTTP hoàn toàn nằm ở chế độ nền, nhưng bạn cảm thấy rằng bạn muốn thực hiện nhiều lần tại một thời điểm, cuộn Service
của riêng bạn sử dụng Executor
với nhóm chủ đề của riêng bạn, đảm bảo rằng bạn tắt dịch vụ đó khi công việc được thực hiện (như IntentService
không) và đảm bảo rằng thiết bị vẫn thức với WakeLock
(và có thể là WifiLock
)
Vv
Nếu "này" là "HTTP GET" yêu cầu, sử dụng:
HttpUrlConnection
, hoặc
HttpClient
, hoặc
OkHttp (wrapper xung quanh những người có thêm lợi ích) hoặc
Retrofit (nếu yêu cầu GET của bạn là thực sự cuộc gọi dịch vụ Web), hoặc
Volley (nếu bạn thích mã HTTP wrapper của bạn sẽ được cung cấp tài liệu, không được hỗ trợ, nhưng googly)
Bất kỳ số lượng của bên thứ ba khác wrapper thư viện
Nếu "này" là "hàng đợi", sử dụng lớp Queue
, hoặc LinkedBlockingQueue
nếu bạn có kế hoạch có nhiều chủ đề làm việc với nó cùng một lúc.
Nếu "cái này" là cái gì khác, tôi không thể giúp bạn, vì tôi mệt mỏi vì đoán.
+1 cho nhận xét của Volley. ;-) –
Lưu ý: Volley bây giờ là cả hai thực hành tốt nhất được đề nghị, hỗ trợ, tài liệu và không chỉ áp dụng cho các yêu cầu GET. – Nilzor
@Nilzor: "thực hành tốt nhất được đề xuất" - vui lòng cung cấp liên kết đến các trang trên http://developer.android.com cho biết điều này. "được hỗ trợ, được ghi lại" - vui lòng cung cấp liên kết đến một số trang web (ví dụ: GitHub repo) nơi hỗ trợ đang diễn ra và tài liệu nằm ở đó. "không chỉ áp dụng cho các yêu cầu GET" - Tôi chưa bao giờ nói rằng đó là * chỉ * cho các yêu cầu 'GET'. Câu hỏi * là về các yêu cầu 'GET'. – CommonsWare