2011-12-05 36 views
5

Tôi muốn có hàng đợi công việc/nhiệm vụ phải được thực hiện trên một chuỗi riêng biệt, nhưng chỉ có thể xử lý một tác phẩm tại một thời điểm. Vì vậy, không phải đồng thời.Hàng đợi chuỗi Android

Có điều gì đó tích hợp sẵn cho Android này không?

Xin cảm ơn,

EDIT: Công việc = lấy thông tin từ Cơ sở dữ liệu. Sau khi hoàn tất, cập nhật giao diện người dùng với thông tin được tìm nạp.

+0

Thông thường, đọc DB được thực hiện trên 'chuỗi riêng', nhưng việc cập nhật giao diện người dùng phải được thực hiện trong chuỗi chính. Vì vậy, các tác vụ này sẽ không được thực hiện tuần tự trên cùng một luồng. – Tom

Trả lời

13

Bạn đã xem java.util.concurrent.Executors chưa? Bạn có thể làm một cái gì đó như thế này:

final static ExecutorService tpe = Executors.newSingleThreadExecutor(); 
... 
tpe.submit(new Runnable() { 
    @Override 
    public void run() { 
     // your work 
    } 
}): 

Nó không phải là Android cụ thể, nó là một phần của jdk5.

Từ doc:

Tạo một Executor có sử dụng một sợi công nhân đơn lẻ hoạt động ra một hàng đợi vô biên . (Tuy nhiên, lưu ý rằng nếu chuỗi đơn này kết thúc do lỗi trong quá trình thực thi trước khi tắt máy, một số mới sẽ thay thế nếu cần để thực hiện các tác vụ tiếp theo.) Nhiệm vụ là đảm bảo thực thi tuần tự và không có nhiều tác vụ sẽ là hoạt động tại bất kỳ thời điểm nào. Không giống như khác tương đương newFixedThreadPool (1) người trả lại được đảm bảo không được cấu hình lại để sử dụng các chủ đề bổ sung.

+0

Tôi tin rằng tôi có thể cập nhật chuỗi giao diện người dùng khi hoàn thành công việc? – pdiddy

+0

Điều thông thường, khi công việc được thực hiện, bạn có thể thay đổi giao diện người dùng của bạn hoặc thực hiện trên chuỗi ui hoặc đăng thông điệp bằng cách sử dụng trình xử lý – gwa

3

Nếu bạn muốn một cái gì đó có thể hoạt động độc lập với vòng đời hoạt động có thể thực hiện công việc xếp hàng đợi, bạn nên xem IntentService. Nó có thể quay lên, làm khối rời rạc của công việc không đồng bộ sau đó kết thúc chính nó khi tất cả các nhiệm vụ của nó được hoàn thành.

Nếu bạn không cần bất kỳ thứ gì có thể sống mà không có bất kỳ hoạt động nào, Java có ExecutorService cùng với một số triển khai khác nhau.

Các vấn đề liên quan