Luồng chạy và thực thi
Luồng chạy và thực thi
Lời gọi thông thường chạy trong luồng hiện tại và có thể chờ chụp, xử lý, cử chỉ, chuyển UI hoặc nhập liệu. parallel của lần chạm và Flow.start là hai cơ chế khác nhau. Blocking là chờ trong luồng gọi, không đồng nghĩa UI Android bị treo.
Luồng nền
Flow.start(name, params=None) mở nhánh cô lập và trả số thứ tự Int. Mỗi lượt Run có tối đa hai nhánh nền. Không có Flow.stop(), pause(), resume(), join() hay API handle. Kết thúc luồng chính chờ các nhánh nền; lỗi ở một nhánh và System.stop() dừng toàn bộ lượt Run.
# Cấu hình luồng macro tên watch_enemy trước khi chạy
ordinal = Flow.start("watch_enemy", {"task": "status"})
print(ordinal)Lần chạm xếp hàng
parallel=True xếp hàng lần chạm; ngoài collect, delay_before và delay_after vẫn chờ trong luồng gọi. Touch.collect() gom chạm để Touch.send(); Touch.wait() chờ hoàn tất. Cử chỉ dùng chung kênh nhập Android, không trở thành thiết bị độc lập. Hủy cử chỉ đang chạy cần Android 8 trở lên.
# Thu thập các lần chạm chồng lấp rồi chờ hoàn tất
Touch.collect()
click((300, 900), hold_ms=1500, parallel=True)
click((780, 900), delay_before=500, parallel=True)
Touch.send()
Touch.wait()Nhận diện và chờ UI
Region.find* tìm sự xuất hiện; Region.wait* chờ biến mất. Nhận diện một lượt vẫn tốn thời gian xử lý. Tốc độ kiểm tra giới hạn 1–60 Hz. Prompt MacroPanel có tương tác được tuần tự và chờ người dùng. OverlayText do từng luồng sở hữu; off_all() chỉ giải phóng overlay của luồng đó, còn UI đi qua Android Main.