Tôi cần phải kết hợp hai danh sách mà mỗi danh sách được trả về sau Cuộc gọi không đồng bộ riêng biệt của riêng nó. Làm thế nào để phối hợp tốt nhất các cuộc gọi Async như thế này. Có bất kỳ phương pháp SDK chuẩn nào để chờ cho đến khi một tác vụ không đồng bộ khác đã hoàn thành không?Android Cách đồng bộ hóa hai tác vụ Async?
Trả lời
Java có một số nội dung thú vị như lớp Tương lai và lượt thích. Không sử dụng để mô tả khung này ở đây có nhiều tài nguyên trên mạng. Nó có thể là tốt hơn mặc dù để có một nhiệm vụ async duy nhất anyway có thực sự không cần phải chạy hai nhiệm vụ async cùng một lúc. Bạn có thể làm cả hai phần trong một doInBackground đơn
execute()
gọi trả về một thể hiện của AsyncTask
, bạn có thể tiết kiệm dụ này để kiểm tra sau, nếu nhiệm vụ đã hoàn thành hay không bằng cách gọi getStatus()
, do đó, mã của bạn sẽ trông như thế này:
final AsyncTask<...> first_task;
final AsyncTask<...> second_task;
public someMethod() {
first_task = new MyFirstAsyncTask().execute();
second_task = new MySecondAsyncTask().execute();
// other things
}
private class MyFirstTask extends AsyncTask<...> {
// business as usual
protected void onPostExecute(SomeData[] result) {
if(second_task != null && second_task.get_status() == AsyncTask.Status.FINISHED) {
// start the task to combine results
....
//
first_task = second_task = null;
}
}
}
private class MySecondTask extends AsyncTask<...> {
// business as usual
protected void onPostExecute(SomeData[] result) {
if(first_task != null && first_task.get_status() == AsyncTask.Status.FINISHED) {
// start the task to combine results
....
//
first_task = second_task = null;
}
}
}
và tác vụ hoàn thành cuối cùng, có thể bắt đầu nhiệm vụ mới để kết hợp kết quả.
Điều đó thực sự phụ thuộc vào nhu cầu.
Bạn có cần đợi tất cả dữ liệu đến không? Nếu không chỉ thực hiện cuộc gọi yo chức năng của bạn với chức năng chặn đồng bộ trong hoạt động của bạn
Nếu có, bạn có mong đợi chúng hoạt động một lần không; do đó hai (hoặc X) tổng cộng? có thể bạn có thể kiểm tra: CoundDownLacth (http://developer.android.com/reference/java/util/concurrent/CountDownLatch.html)
- 1. Cách thực hiện tác vụ đồng bộ hóa?
- 2. Tác vụ Android Async hủy/dừng
- 3. Node.js async để đồng bộ hóa
- 4. Cách tốt nhất để đồng bộ hóa tác vụ không đồng bộ
- 5. iOS5.1: đồng bộ hóa các tác vụ (chờ hoàn thành)
- 6. Thao tác đồng bộ hóa trong Silverlight
- 7. Gọi lại lửa sau khi đồng bộ hóa Phương thức tác vụ
- 8. Chạy nhiều C# Tác vụ Async
- 9. Mockito với Java async-> công cụ đồng bộ hóa
- 10. Tác vụ không đồng bộ không kết thúc
- 11. Đồng bộ hóa Android strings.xml
- 12. Phương thức nên trong API trả về Tác vụ kết thúc bằng Tác vụ hoặc Async
- 13. Dịch vụ đồng bộ hóa và iOS
- 14. Cách quản lý nhiều tác vụ Async hiệu quả trong Android
- 15. Đồng bộ hóa hai chuỗi với AutoResetEvent
- 16. Ngăn vòng lặp đồng bộ hóa mạng khi đồng bộ hóa từ mạng trong Android ContentProvider
- 17. Thực hiện các tác vụ song song với async/await
- 18. Làm cách nào để đồng bộ hóa hai quy trình?
- 19. Cách đồng bộ hóa hai kho lưu trữ git
- 20. Tài nguyên bộ điều hợp đồng bộ hóa Android
- 21. android.os.NetworkOnMainThreadException. Cần sử dụng tác vụ không đồng bộ?
- 22. máy phát/tác vụ task.js so với các cuộc gọi lại không đồng bộ
- 23. Làm thế nào để đồng bộ hóa hai kho Subversion?
- 24. Thực hiện tác vụ thông qua bối cảnh đồng bộ hóa ASP.NET một cách an toàn và không có AsyncManager.Sync
- 25. Đồng bộ hóa tác vụ mà không có chuỗi giao diện người dùng
- 26. Thư viện song song tác vụ vs Đồng bộ hóa chủ đề
- 27. Hủy tác vụ truy xuất URL không đồng bộ
- 28. Bộ điều hợp đồng bộ hóa liên hệ trong android
- 29. đồng bộ hóa (this) vs đồng bộ hóa (MyClass.class)
- 30. Đồng bộ Hai ScrollView
Điều gì về kết hợp công việc của cả hai asynctask trong một đơn? – dmon
Hoặc sử dụng AsyncTask.executeOnExecutor (singleThreadPoolExecutor) xử lý việc thực hiện xếp hàng. – yorkw