该资料介绍 .NET MAUI 应用生命周期要点。应用有四种状态:not running(未运行)、running(运行)、deactivated(停用)、stopped(停止)。需注意:Resumed 仅在从 Stopped 返回时触发,首次启动的顺序是 Created → Activated,不会调用 Resumed,因此必须每次进入前台执行的逻辑应放在 OnActivated。Deactivated 不等同于 Stopped,弹窗、分屏或下拉通知只触发 Deactivated,不应在此执行重量级保存,真正后台化时应在 OnStopped 保存。Android 上按硬件返回键可能直接调用 Destroying 而不经过 Stopped,关键保存逻辑需同时写在 OnStopped 与 OnDestroying。多窗口场景(iPad、Mac Catalyst、桌面 Windows)每个 Window 独立触发各自生命周期事件,不能假设全局单一生命周期。性能方面,生命周期处理程序中长时间运行的工作会导致 Android ANR(约 5 秒超时)或 iOS watchdog 终止,因此处理程序应保持快速,可优先使用 Preferences.Set 等快速同步写入,较大状态可用 SecureStorage 或文件序列化,但应控制在 1–2 秒内。iOS 13+ 使用场景生命周期(如 SceneWillConnect),MAUI 仍会转发旧的 delegate 方法,建议面向基于场景的 API。资料还提供状态保存检查清单:在 OnStopped 保存瞬时 UI 状态(滚动位置、草稿文本);在 OnResumed 而非 OnActivated 恢复状态以避免重复恢复;不在 OnDeactivated 执行重 I/O;Android 关键保存逻辑同时放入 OnDestroying;生命周期处理程序在 2 秒内完成;多窗口应用独立处理各窗口状态。
maui-app-lifecycle
通用与其它
更新于 10-16 08:35