Xamarin在后退按钮上关闭Android应用程序

dim*_*s93 7 c# android xamarin

我尝试了3种不同的方式

if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
    System.Environment.Exit(0);

public override void OnBackPressed()
{
    Finish();
}

public override bool OnKeyDown(Keycode keyCode, KeyEvent e)
{
    if (keyCode == Keycode.Back)
    {
            System.Environment.Exit(0);
            return true;
    }
    return base.OnKeyDown(keyCode, e);
}
Run Code Online (Sandbox Code Playgroud)

上述似乎都没有奏效

Dem*_*ian 20

按下物理后退按钮时,可以使用DepedencyService关闭应用程序:

在您的UI(PCL)中,执行以下操作:

protected override bool OnBackButtonPressed()
{
   if (Device.RuntimePlatform == Device.Android)
       DependencyService.Get<IAndroidMethods>().CloseApp();

   return base.OnBackButtonPressed();
}
Run Code Online (Sandbox Code Playgroud)

还要创建一个接口(在您的UI PCL中):

public interface IAndroidMethods
{
    void CloseApp();
}
Run Code Online (Sandbox Code Playgroud)

现在在Android项目中实现Android特定的逻辑:

[assembly: Xamarin.Forms.Dependency(typeof(AndroidMethods))]
namespace Your.Namespace
{
   public class AndroidMethods : IAndroidMethods
   {
       public void CloseApp()
       {
            Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
       }
   }
}
Run Code Online (Sandbox Code Playgroud)