生态桌面应用
应用和事件循环
创建应用、监听生命周期、使用计时器并安全退出事件循环。
每个进程通常创建一个应用,由它持有窗口、字体、图片、计时器和事件队列。运行必须在 VM 所有者线程调用,且同一应用不能并发运行两次。
引「包:言界」为 界面;
定 应用 为 界面.应用(「事件循环示例」);
定 窗口 为 应用.窗口({「标题」:「生命周期」,「宽」:560,「高」:320});
定 状态 为 窗口.列({「内边距」:20}).文字(「等待事件」);
法 一秒后(所事件) 则
状态.内容(「计时器已触发」);
终
法 关闭(所事件) 则
应用.退出();
终
应用.定时器(1000,假,一秒后);
窗口.关闭时(关闭);
窗口.显示();
应用.运行();定时器(毫秒,重复,回调)最小间隔为 10 毫秒。回调不是操作系统线程回调,而是和窗口事件一样进入有界宿主队列,再由事件泵在言序线程执行。周期动画应使用单调时间计算当前值,不要假设每次回调间隔完全相等。
应用级监听(事件类型,回调)可处理启动、激活、失活、退出请求、系统主题和显示器变化。窗口未处理的退出请求会结束循环;显式调用退出只请求停止,运行返回后再由关闭释放应用根资源。
事件队列最多保留 4096 项。指针移动、窗口缩放和重绘会保留最新状态,滚轮在同一批次累积,因此繁忙时不会因每个物理事件都跨 ABI 而无限增长。