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

Xamarin.Forms Android:休眠后点击退出按钮应用因闪屏重启

Xamarin.Forms.Android 休眠后退出重启问题解决方案

问题根源

核心问题出在闪屏Activity的启动模式或生命周期处理不当,导致设备休眠后退出主应用时,系统重新拉起闪屏页,引发应用自动重启。

具体修复步骤

1. 调整闪屏Activity配置

修改闪屏Activity的[Activity]特性,设置正确的启动模式和历史记录属性,避免闪屏页留在返回栈或重复实例化:

[Activity(Label = "你的应用名", 
          Icon = "@mipmap/icon", 
          Theme = "@style/SplashTheme", 
          MainLauncher = true, 
          LaunchMode = LaunchMode.SingleTop, 
          NoHistory = true)]
public class SplashActivity : Activity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        // 跳转到主页面后立即结束闪屏页
        StartActivity(new Intent(this, typeof(MainActivity)));
        Finish();
    }
}

2. 修正退出应用的代码

放弃强制终止进程的JavaSystem.Exit(0),改用Android原生的Activity结束逻辑,保证应用正常退出:

// 在共享项目的退出按钮命令中
if (Device.RuntimePlatform == Device.Android)
{
    var currentActivity = Android.App.Application.Context.GetActivity() as MainActivity;
    currentActivity?.FinishAffinity(); // 结束当前任务栈内所有关联Activity
    // 可选:若需彻底终止进程,可添加以下代码(不推荐强制终止,优先让系统自然回收)
    // Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
}

同时确保MainActivity的启动模式合理(默认配置即可,若有需求可设为SingleTask):

[Activity(Label = "你的应用名", 
          Icon = "@mipmap/icon", 
          Theme = "@style/MainTheme", 
          ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
    // ... 原有业务代码
}

3. 优化休眠恢复后的生命周期处理

在闪屏Activity中重写OnResume方法,避免休眠恢复时重复启动页面:

protected override void OnResume()
{
    base.OnResume();
    // 检查是否已有MainActivity在运行,避免重复跳转
    var mainActivityExists = Android.App.Application.Context.GetActivity() is MainActivity;
    if (mainActivityExists)
    {
        Finish();
        return;
    }
    // 原有跳转逻辑
    StartActivity(new Intent(this, typeof(MainActivity)));
    Finish();
}

4. 真机验证

优先使用真机测试(模拟器存在系统行为差异),验证流程:

  • 启动应用进入主页面
  • 让设备进入休眠模式
  • 唤醒设备后点击退出按钮
  • 确认应用正常关闭,无自动重启现象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:55:23