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

.NET MAUI Shell重写OnBackButtonPressed后默认返回行为失效问题

.NET MAUI Shell Android 返回按钮首页退出应用解决方案

在.NET MAUI Shell的Android场景下,重写OnBackButtonPressed后,首页(如CommissionPage)调用base.OnBackButtonPressed()只会将应用置于后台——这是因为Shell导航栈为空时,该方法的默认行为就是退到后台而非退出应用。要实现直接退出应用的效果,需要调用Android原生API来处理:

核心解决方案代码

protected override bool OnBackButtonPressed()
{
    try
    {
        // 其他页面的自定义导航逻辑
        // ---- various other conditions here ---

        if (currentPageType == typeof(CommissionPage))
        {
#if ANDROID
            // Android平台直接触发应用退出
            Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
            Android.App.Application.Exit();
#endif
            return true;
        }
    }
    catch (Exception ex)
    {
        ExceptionExtension.TrackError(ex);
        return false;
    }
    return true;
}

补充:添加双击返回退出交互(可选)

如果需要实现Android常见的"双击返回键退出应用"逻辑,可以增加计时器判断两次点击间隔:

private DateTime _lastBackPressedTime;
protected override bool OnBackButtonPressed()
{
    try
    {
        if (currentPageType == typeof(CommissionPage))
        {
#if ANDROID
            double elapsedSeconds = (DateTime.Now - _lastBackPressedTime).TotalSeconds;
            if (elapsedSeconds <= 2)
            {
                Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
                Android.App.Application.Exit();
                return true;
            }
            _lastBackPressedTime = DateTime.Now;
            // 此处可添加Toast提示:"再次点击退出应用"
            return true;
#endif
        }
        // 其他页面自定义导航逻辑
        // ---- various other conditions here ---
    }
    catch (Exception ex)
    {
        ExceptionExtension.TrackError(ex);
        return false;
    }
    return true;
}

内容的提问来源于stack exchange,提问作者George M Ceaser Jr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:27:38