Метод OnAppearing на IOS - PullRequest
       15

Метод OnAppearing на IOS

0 голосов
/ 05 сентября 2018

Когда мое приложение находится в фоновом режиме и выходит на передний план, метод OnAppearing () не работает в IOS или когда телефон заблокирован, а затем разблокирован, а приложение находится на переднем плане, метод Android OnAppearing () не вызывается в Android все отлично работает Я нашел это руководство ниже, но все еще не работает, у меня есть последняя версия форм xamarin.

Руководство: https://kent -boogaart.com / блог / хакерство-xamarin.forms-page.appearing-для-КСН

Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 05 сентября 2018

Как вы видели, «жизненные циклы» в iOS разные. Один из способов, который помогает, - это использовать жизненные циклы приложения и связать их с Page событиями (или командами, если необходимо).

В своем подклассе Application добавьте пару открытых EventHandlers и свяжите их с 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 добавьте обработчик, который отслеживает, когда эта страница возвращается из фона, вроде обработчика "OnAppearing after OnPause" ...

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();
}
...