UIThread là luồng thực thi chính cho ứng dụng của bạn. Đây là nơi hầu hết mã ứng dụng của bạn được chạy. Tất cả các thành phần ứng dụng của bạn (Hoạt động, Dịch vụ, ContentProviders, BroadcastReceivers) đều được tạo trong luồng này và mọi lệnh gọi hệ thống đến các thành phần đó đều được thực hiện trong luồng này.
Ví dụ: giả sử ứng dụng của bạn là một lớp Hoạt động duy nhất. Sau đó, tất cả các phương thức vòng đời và hầu hết mã xử lý sự kiện của bạn được chạy trong UIThread này. Đây là những phương pháp như onCreate
, onPause
, onDestroy
, onClick
vv Ngoài ra, đây là nơi mà tất cả các bản cập nhật cho giao diện người dùng được thực hiện. Bất kỳ điều gì khiến giao diện người dùng được cập nhật hoặc thay đổi ĐỀU xảy ra trên chuỗi giao diện người dùng.
Để biết thêm thông tin về Quy trình và Chuỗi ứng dụng của bạn, hãy nhấp vào đây.
Khi bạn tạo ra một luồng mới một cách rõ ràng để thực hiện công việc ở chế độ nền, thì mã này sẽ không được chạy trên UIThread. Vì vậy, điều gì sẽ xảy ra nếu luồng nền này cần thực hiện điều gì đó thay đổi giao diện người dùng? Đây là những gì runOnUiThread
là cho. Trên thực tế, bạn phải sử dụng Handler (xem liên kết bên dưới để biết thêm thông tin về điều này). Nó cung cấp cho các luồng nền này khả năng thực thi mã có thể sửa đổi giao diện người dùng. Họ làm điều này bằng cách đặt mã sửa đổi giao diện người dùng trong một đối tượng Runnable và chuyển nó đến phương thức runOnUiThread.
Để biết thêm thông tin về các chuỗi nhân viên sinh sản và cập nhật giao diện người dùng từ họ, hãy nhấp vào đây
Cá nhân tôi chỉ sử dụng runOnUiThread
phương pháp này trong Kiểm tra thiết bị của mình. Vì mã kiểm tra không thực thi trong UIThread, bạn cần sử dụng phương pháp này để chạy mã sửa đổi giao diện người dùng. Vì vậy, tôi sử dụng nó để đưa các sự kiện nhấp chuột và chính vào ứng dụng của mình. Sau đó, tôi có thể kiểm tra trạng thái của ứng dụng để đảm bảo những điều chính xác đã xảy ra.
Để biết thêm thông tin về kiểm tra và chạy mã trên UIThread, hãy nhấp vào đây