Android cũng tương tự thôi bạn, các app android (mobile) hay các fw GUI nói chung đều có chung 1 cơ chế gọi là event loop. Khi start 1 ứng dụng thì sẽ fork 1 process, process này sẽ sinh ra 1 thread gọi là main thread. Main thread này sẽ lặp vô hạn lấy các message từ message queue ra và xử lí. Tùy thuộc vào message mà sẽ pass đến các bộ xử lí đã đăng kí tương ứng. Trong đó có 1 số bộ xử lí mặc định gồm có: broadcast listener, IPC call, view system,… Ngoài ra còn có custom processing do dev tự định nghĩa.
Do tất cả các xử lí UI đều được xử lí trên cùng 1 thread nên Android developer đều được khuyến cáo là không xử lí quá nhiều trên main thread vì sẽ làm treo ứng dụng
Ví dụ: khi người dùng touch vào màn hình thì android system sẽ pass 1 event mang thông tin về touch event vào message main queue của ứng dụng, touch event này sẽ được pass sang view system của ứng dụng ở lần loop tiếp theo, view system sẽ pass down event xuống các child view để xác định user muốn click vào view nào. Khi gặp view thích hợp thì view này sẽ gọi click listener đã được dev set vào view đó. Ngoài các event do hệ thống sinh ra thì dev cũng có thể send message vào main message queue bằng class Handler. Đây là cách mà có thể thực hiện 1 thay đổi UI từ thread khác main thread trong Android
Ảnh mô tả sơ lược về ý tưởng của cơ chế hoạt động của android event system. Ảnh dưới mình đã lược bỏ phần lớn những thành phần trung gian, chỉ giữ lại những thành phần nêu bật được ý tưởng hoạt động thôi. Thực tế thì phức tạp hơn thế nhiều