在 Xamarin.Forms 中的 OnStart 期间设置 MainPage = NavigationPage 在 Android 中显示空白屏幕

Setting MainPage = NavigationPage during OnStart in Xamarin.Forms displays a blank screen in Android

我有一个 Xamarin Forms 应用程序,我在 OnStart 期间将 MainPage 设置为 NavigationPage。
NavigationPage 是 static(保存在内存中以供重用)。
当我在 Android 中按下后退按钮并返回应用程序时,再次执行 OnStart 方法并且应用程序显示空白屏幕。

在此处查看重现:Xamarin.Forms OnStart Navigation

public partial class App : Application
{
    private static readonly NavigationPage NavigationPage = new NavigationPage(new MainPage());
    public App ()
    {
        InitializeComponent();
    }

    protected override void OnStart()
    {
        MainPage = NavigationPage;
    }
}

如果我在构造函数中执行相同的操作,应用程序将按预期运行:没有空白屏幕并显示上次访问的页面。

在此处查看重现:Xamarin.Forms Constructor Navigation

public partial class App : Application
{
    private static readonly NavigationPage NavigationPage = new NavigationPage(new MainPage());
    public App ()
    {
        InitializeComponent();

        MainPage = NavigationPage;
    }
}

在构造函数中设置MainPage和在OnStart方法中设置有什么区别?

您不能在 onstart 中使用在 init 调用之外初始化的静态主页执行此操作。

在 InitializeComponent 之后的构造函数中执行。

像这样:

public partial class App : Application
{
private static readonly NavigationPage NavigationPage;
public App ()
{
    InitializeComponent(); 
    NavigationPage = new NavigationPage(new MainPage());

    MainPage = NavigationPage;
}
}