Konkurensi dan eksekusi
Konkurensi dan eksekusi
Panggilan biasa berjalan dalam alur saat ini dan dapat menunggu capture, pemrosesan, gestur, UI, atau input pengguna. parallel pada sentuhan dan Flow.start adalah mekanisme berbeda. Blocking berarti menunggu di alur pemanggil, bukan membekukan UI Android.
Alur latar
Flow.start(name, params=None) memulai cabang terisolasi dan mengembalikan nomor urut Int. Satu Run memiliki maksimal dua cabang latar. Tidak ada Flow.stop(), pause(), resume(), join(), atau handle. Alur utama menunggu cabang latar; kesalahan cabang atau System.stop() menghentikan seluruh Run.
# Konfigurasikan alur makro bernama watch_enemy sebelum dijalankan
ordinal = Flow.start("watch_enemy", {"task": "status"})
print(ordinal)Sentuhan dalam antrean
parallel=True mengantrekan sentuhan; di luar collect, delay_before dan delay_after tetap menunggu di pemanggil. Touch.collect() mengumpulkan sentuhan untuk Touch.send(); Touch.wait() menunggu selesai. Gestur berbagi kanal input Android, bukan perangkat independen. Pembatalan gestur aktif memerlukan Android 8 atau lebih baru.
# Kumpulkan sentuhan yang tumpang tindih, lalu tunggu hingga selesai
Touch.collect()
click((300, 900), hold_ms=1500, parallel=True)
click((780, 900), delay_before=500, parallel=True)
Touch.send()
Touch.wait()Pengenalan dan menunggu UI
Region.find* mencari kemunculan; Region.wait* menunggu hilangnya target. Pengenalan sekali pun memerlukan waktu pemrosesan. Laju polling dibatasi 1–60 Hz. Prompt MacroPanel interaktif diserialkan dan menunggu pengguna. OverlayText dimiliki alurnya; off_all() hanya melepas overlay alur tersebut, sementara UI melalui Android Main.