.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
相关产品推荐
相关产品推荐

