Chủ đề
Một chủ đề là một đơn vị thực hiện đồng thời. Nó có ngăn xếp cuộc gọi riêng của mình. Có hai phương pháp để thực hiện các luồng trong các ứng dụng.
Một là cung cấp một lớp mới mở rộng Thread và ghi đè phương thức run () của nó. Cái kia đang cung cấp một cá thể Thread mới với một đối tượng Runnable trong quá trình tạo nó. Một luồng có thể được thực thi bằng cách gọi phương thức "bắt đầu" của nó. Bạn có thể đặt "Mức độ ưu tiên" của một luồng bằng cách gọi phương thức "setP Warriority (int)" của nó.
Một chuỗi có thể được sử dụng nếu bạn không có ảnh hưởng trong phần UI. Ví dụ: bạn đang gọi một số dịch vụ web hoặc tải xuống một số dữ liệu và sau khi tải xuống, bạn đang hiển thị nó trên màn hình của mình. Sau đó, bạn cần sử dụng Trình xử lý với Chủ đề và điều này sẽ làm cho ứng dụng của bạn trở nên phức tạp để xử lý tất cả các phản hồi từ Chủ đề.
Trình xử lý cho phép bạn gửi và xử lý các đối tượng Message và Runnable được liên kết với MessageQueue của một luồng. Mỗi luồng có mỗi hàng đợi tin nhắn. (Giống như Danh sách việc cần làm) và chuỗi sẽ nhận từng thông báo và xử lý nó cho đến khi hàng đợi tin nhắn trống. Vì vậy, khi Handler giao tiếp, nó chỉ đưa ra một thông báo cho chuỗi người gọi và nó sẽ chờ để xử lý.
Nếu bạn sử dụng các luồng Java thì bạn cần xử lý các yêu cầu sau trong mã của riêng bạn:
Đồng bộ hóa với luồng chính nếu bạn gửi lại kết quả cho giao diện người dùng Không có mặc định để hủy luồng Không có nhóm luồng mặc định Không có mặc định để xử lý các thay đổi cấu hình trong Android
AsyncTask
AsyncTask cho phép sử dụng luồng UI thích hợp và dễ dàng. Lớp này cho phép thực hiện các hoạt động nền và xuất bản kết quả trên luồng UI mà không phải thao tác với các luồng và / hoặc trình xử lý. Một tác vụ không đồng bộ được xác định bởi một tính toán chạy trên luồng nền và kết quả được công bố trên luồng UI.
AsyncTask sẽ trải qua 4 giai đoạn sau:
onPreExecute ()
Được gọi trên luồng UI trước khi tác vụ được thực thi
doInbackground (Params ..)
Được gọi trên luồng nền ngay sau khi onPreExecute () kết thúc thực thi.
onProTHERUpdate (Tiến trình ..)
Được gọi trên luồng UI sau khi có lệnh gọi xuất bản (Tiến trình ...).
onPostExecute (Kết quả)
Được gọi trên luồng UI sau khi tính toán nền kết thúc.
Tại sao bạn nên sử dụng AsyncTask?
Dễ dàng sử dụng cho một giao diện người dùng. (Vì vậy, sử dụng nó khi luồng người gọi là một luồng UI).
Không cần phải thao tác Xử lý.