Tôi cần thực hiện một số số AsyncTask
và sau đó thu thập tất cả kết quả của chúng, hợp nhất và sau đó trả lại kết quả cuối cùng cho người dùng của tôi.Làm thế nào để sử dụng ExecutorService với Android AsyncTask?
Tôi đang tìm cách quản lý nhiều tài khoản AsyncTask
trong Android. Tôi đang nghĩ đến việc sử dụng một số ExecutorService
từ gói Java Concurrency nhưng tôi bị kẹt vì ExecutorService
chỉ chạy hoặc Runnables hoặc Callables ONLY. Để thiết lập yêu cầu của tôi, tôi có thể sử dụng
ExecutorService.invokeAll((Collection<? extends Callable<T>> tasks)
Phương pháp invokeAll()
sẽ trả về một danh sách các List<Future><V>>
chỉ khi tất cả các nhiệm vụ đệ trình được hoàn thành và tôi có thể nhận được kết quả của tôi cho mỗi công việc từ của nó tương ứng Future
.
Tất cả đều tốt với ExecutorService
mong đợi thực tế là nó không chấp nhận AsyncTask
.
Có cách nào khác để sử dụng AsyncTask
và ExecutorService
hoặc nếu bạn có thể vui lòng giới thiệu một cách tiếp cận khác.
Điều tốt là [AsyncTask] (http://developer.android.com/reference/android/os/AsyncTask.html) có phương thức executeOnExecutor(), điều xấu là nó chỉ khả dụng kể từ API Cấp 11 – yorkw
Mọi tham chiếu về cách sử dụng executeOnExecutor? Hơn nữa tính năng này có sẵn từ HoneyComb (API Level 11) nhưng minSDK của ứng dụng của tôi là 4. – AKh
Nếu bạn nhấn mạnh, hãy xem câu trả lời của tôi [ở đây] (http://stackoverflow.com/questions/7211684/asynctask-executeonexecutor-before- api-level-11/9509184 # 9509184). – yorkw