Confirmation Dialog on back button press event Xamarin.Forms

Here's the code that worked for me

protected override bool OnBackButtonPressed()
    {
        Device.BeginInvokeOnMainThread(async () =>
        {
            var result = await this.DisplayAlert("Alert!", "Do you really want to exit?", "Yes", "No");

            if (result)
            {
                System.Diagnostics.Process.GetCurrentProcess().CloseMainWindow(); // Or anything else
            }
        });
        return true;
    }

Easy way to override hardware back button and show a confirmation dialog box to user

protected override bool OnBackButtonPressed()
{
    Device.BeginInvokeOnMainThread(async () =>
    {
        if (await DisplayAlert("Alert", "Are you sure you want to go back ?", "Yes", "No"))
        {
            base.OnBackButtonPressed();

            await Navigation.PopAsync();
         }
    });

    return true;
}

    protected override bool OnBackButtonPressed()
    {
        Device.BeginInvokeOnMainThread(async() => {
            var result = await this.DisplayAlert("Alert!", "Do you really want to exit?", "Yes", "No");
            if (result) await this.Navigation.PopAsync(); // or anything else
        });

        return true;
    }

If you are on Mainpage and want to exit your app then this code will help you.

In your UI (PCL)

  protected override bool OnBackButtonPressed()
            {

                Device.BeginInvokeOnMainThread(new Action(async () => {
                    var result = await this.DisplayAlert("Alert!", "Do you really want to exit?", "Yes", "No");

                    if (result)
                    {
                        if (Device.RuntimePlatform == Device.Android)
                            DependencyService.Get<IAndroidMethods>().CloseApp();
                    }
                }));
                return true;
            }

Also create an Interface (in your UI PCL):

public interface IAndroidMethods
{
    void CloseApp();
}

Now implement the Android-specific logic in your Android project:

[assembly: Xamarin.Forms.Dependency(typeof(AndroidMethods))]
namespace Your.Namespace
{
   public class AndroidMethods : IAndroidMethods
   {
       public void CloseApp()
       {
             var activity = (Activity)Forms.Context;
            activity.FinishAffinity();
       }
   }
}