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

.NET MAUI移动端应用:最小化窗口时停止背景音乐的方法

.NET MAUI 实现应用最小化时停止背景音乐的正确方式

你的代码使用ContentPage.Disappearing事件来停止音乐,但这个事件的触发场景不只是应用最小化——当页面被导航到其他页面时,该事件也会触发,无法精准匹配“应用最小化”的需求。以下是两种精准实现的方案:

方案一:通过App类的生命周期方法处理

应用级的生命周期回调能精准捕获进入后台(最小化)和回到前台的状态,推荐使用这种方式:

  1. 在App.xaml.cs中重写OnSleep和OnResume方法,并维护音乐播放器的全局引用:
public partial class App : Application
{
    // 存储全局音乐播放器引用
    public MediaElement? MusicPlayer { get; set; }

    public App()
    {
        InitializeComponent();
        MainPage = new NavigationPage(new StartPage());
    }

    // 应用进入后台(最小化)时触发
    protected override void OnSleep()
    {
        base.OnSleep();
        MusicPlayer?.Stop();
    }

    // 应用回到前台时触发(可选恢复播放)
    protected override void OnResume()
    {
        base.OnResume();
        // 如果需要回到前台自动继续播放,取消下面的注释
        // MusicPlayer?.Play();
    }
}
  1. 在StartPage的构造函数中,将页面内的mediaElement赋值给App的全局引用:
public partial class StartPage : ContentPage
{
    public StartPage()
    {
        InitializeComponent();
        // 将页面的MediaElement关联到App的全局引用
        ((App)Application.Current).MusicPlayer = mediaElement;
    }
}

方案二:在页面中订阅应用生命周期事件

如果不想维护全局引用,也可以直接在页面内订阅应用的Sleeping和Resuming事件:

public partial class StartPage : ContentPage
{
    public StartPage()
    {
        InitializeComponent();
        // 订阅应用进入后台和回到前台的事件
        Application.Current.Sleeping += OnAppSleeping;
        Application.Current.Resuming += OnAppResuming;
    }

    private void OnAppSleeping(object? sender, EventArgs e)
    {
        mediaElement.Stop();
    }

    private void OnAppResuming(object? sender, EventArgs e)
    {
        // 可选:回到前台时恢复播放
        // mediaElement.Play();
    }

    // 页面销毁时取消事件订阅,避免内存泄漏
    protected override void OnDisappearing()
    {
        base.OnDisappearing();
        Application.Current.Sleeping -= OnAppSleeping;
        Application.Current.Resuming -= OnAppResuming;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:24:27