You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI中Window.Resumed方法无法触发,求解决方案

问题:设备休眠恢复后调用指定方法失效的解决方案

希望实现场景:当设备进入休眠模式后恢复至应用时,调用指定方法。尝试以下代码但无法正常工作:

protected override Window CreateWindow(IActivationState activationState)
{
    var window = base.CreateWindow(activationState);
    window.MinimumHeight = PhotoScannerConstants.WINDOW_HEIGHT;
    window.MinimumWidth = PhotoScannerConstants.WINDOW_WIDTH;
    window.Activated += OnActivated;
    window.Resumed += Resumed;

    return window;
}

已创建OnActivated和Resumed方法。

解决方案

  • 调整事件监听对象:MAUI中Window.Resumed事件的触发逻辑和设备休眠恢复场景不匹配,应该改用Application级别的Resume事件来监听设备从休眠恢复到应用的场景。
  • 两种可行实现方式:

方式1:重写App类的OnResume方法

在App.xaml.cs中直接重写框架提供的生命周期方法,代码更简洁:

public partial class App : Application
{
    protected override void OnResume()
    {
        base.OnResume();
        // 执行休眠恢复后的目标方法
        ExecutePostWakeMethod();
    }

    private void ExecutePostWakeMethod()
    {
        // 这里编写你的业务逻辑
    }
}

方式2:绑定Application.Resumed事件

如果需要在Window类内部处理逻辑,可以在窗口初始化时绑定事件,记得销毁时解绑避免内存泄漏:

public YourCustomWindow()
{
    InitializeComponent();
    // 绑定应用恢复事件
    Application.Current.Resumed += HandleAppResumed;
}

private void HandleAppResumed(object sender, EventArgs e)
{
    // 调用指定方法
    ExecutePostWakeMethod();
}

protected override void OnDisappearing()
{
    base.OnDisappearing();
    // 解绑事件
    Application.Current.Resumed -= HandleAppResumed;
}

private void ExecutePostWakeMethod()
{
    // 这里编写你的业务逻辑
}
  • 额外说明:Window.Activated事件会在窗口从后台切到前台时触发,但它包含的场景不止休眠恢复(比如用户切换到其他应用再切回)。如果需要严格区分休眠恢复和普通前台切换,需结合各平台原生的电源管理API判断设备唤醒状态。

内容的提问来源于stack exchange,提问作者Hiren Dhamecha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 04:12:04