AsyncTask(short-lived tasks) thực thi các task nhỏ yêu cầu giao tiếp với main thread(ui thread). AsyncTask cho phép thực thi tiến trình ở background sau đó hiển thị kết quả lên UI thread một cách dễ dàng. nên sử dụng AsyncTask khi caller thread là UI thread.

Thread(standard java construction) thực thi các task lớn hơn, có thể giao tiếp với các worker thread khác và main thread(caller thread).Thread được sử dụng để thực thi một tiến trình song song với main thread(caller thread), không thể giao tiếp với UI, nếu muốn giao tiếp với UI từ thread chúng ta phải cần thêm Handler, nhưng như vậy thì sẽ làm cho ứng dụng trở nên phức tạp hơn khi phải sử lý các responses từ Thread.

Thread là một tiến trình thực thi ở background. Nó củng có call stack. Có 2 cách thức để thực thi 1 thread trong ứng dụng.

  • sử dụng một class mới extends Thread và override phương thức run().
  • cung cấp một instance của lớp Runnable và override phương thức run().

Handler cho phép gửi và sử lý các đối tượng message và runnable được liên kết với MessageQueue của Thread tạo ra nó. mỗi Thread sẽ có một message queue. Thread sẽ sử lý mỗi message cho đến khi message queue trống.

Service(time consuming tasks): là một context giống như một Activity nhưng không có UI. Service cho phép thực thi tiến trình ở background một cách lâu dài, cung cấp chức năng cho các ứng dụng khác sử dụng. Service củng giống như các thành phần khác của ứng dụng, chạy trên main thread(caller thread). do đó đối với những thực thi đòi hỏi nhiều tính toán CPU(playing music, networking) chúng ta nên tạo riêng một thread mới cho Service.

IntentService là một một Service chạy trên một Thread riêng.

thread
Bảng so sánh Thread, Handler, AsyncTask, Service, IntentService

Advertisements