电脑上点关闭,窗口没了,后台图标也找不到。我本来只是想把它收起来,结果程序直接退出,正在传的文件也停了。
现在普通关闭只隐藏窗口,传输和 Go 核心继续运行。点托盘或者菜单里的打开,会恢复原窗口,草稿和滚动位置都在。再次启动应用也会回到已有实例,避免多起一个核心抢端口。
我没有销毁窗口再重建,日常收起和恢复可以直接沿用里面的状态。
从托盘退出
真正退出放在托盘右键菜单里。退出时先暂停或收尾任务,停止导出,释放媒体预览,再停 Go 子进程、销毁托盘,最后结束应用。
这里要处理两个事件的交叉:退出过程中会关窗口,窗口的关闭处理得放行;退出开始以后,托盘的打开回调也要停止。相关状态收进同一处,记录窗口是否存在、是否正在退出、收尾是否已经开始。
我分别检查了源码启动和打包运行。正式包的核心路径、子进程和安装器事件与开发时有差异,安装器生命周期消息需要在普通启动之前处理。
这轮只做日常后台运行,没有加开机启动和系统服务。后续升级提示里的退出操作,也可以沿用这条收尾流程。