在iOS上的OnAppearing方法

时间:2018-09-05 13:37:42

标签: c# xamarin xamarin.forms xamarin.ios xamarin.android

当我的应用程序在后台运行并进入前台时,OnAppearing()方法在IOS中不起作用,或者当手机被锁定然后再解锁时,并且该应用程序在前台时,在Android上未调用OnAppearing()方法一切正常。 我在下面找到了该指南,但仍然无法使用,我拥有最新版本的xamarin表格。

指南: https://kent-boogaart.com/blog/hacking-xamarin.forms-page.appearing-for-ios

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:7)

您已经看到,iOS中的“生命周期”是不同的。一种有用的方法是使用应用程序生命周期,并将其与Page事件(或命令,如果需要)相关联。

在您的Application子类中,添加几个公共EventHandler,并将它们绑定到OnResume(以及OnSleep(如果需要)中)

public partial class App : Application
{
    public EventHandler OnResumeHandler;
    public EventHandler OnSleepHandler;

    public App()
    {
        InitializeComponent();
        MainPage = new MyPage();
    }

    protected override void OnSleep()
    {
        OnSleepHandler?.Invoke(null, new EventArgs());
    }

    protected override void OnResume()
    {
        OnResumeHandler?.Invoke(null, new EventArgs());
    }
}

现在,在您的ContentPage子类中,添加一个处理程序,该处理程序可以跟踪该页面何时从后台返回,类似于“ OnPause之后出现OnAppearing”处理程序...

void Handle_OnResumeHandler(object sender, EventArgs e)
{
    Console.WriteLine("OnPauseResumeWithPage");
}

protected override void OnAppearing()
{
    (App.Current as App).OnResumeHandler += Handle_OnResumeHandler;
    base.OnAppearing();
}

protected override void OnDisappearing()
{
    (App.Current as App).OnResumeHandler -= Handle_OnResumeHandler;
    base.OnDisappearing();
}