Демонстрация жизненного цикла приложения для Xamarin.iOS

В этой статье и примере кода показаны четыре состояния приложения в iOS, а также роль AppDelegate методов в уведомлении о том, когда состояния изменяются. Приложение будет выводить обновления в консоль всякий раз, когда приложение изменяет состояние:

The sample app

The app will print updates to the console whenever the app changes state

Пошаговое руководство

  1. Откройте проект жизненного цикла в решении LifecycleDemo.

  2. AppDelegate Откройте класс. Ведение журнала добавлено в методы жизненного цикла, чтобы указать, когда приложение изменило состояние:

    public override void OnActivated(UIApplication application)
    {
        Console.WriteLine("OnActivated called, App is active.");
    }
    public override void WillEnterForeground(UIApplication application)
    {
        Console.WriteLine("App will enter foreground");
    }
    public override void OnResignActivation(UIApplication application)
    {
        Console.WriteLine("OnResignActivation called, App moving to inactive state.");
    }
    public override void DidEnterBackground(UIApplication application)
    {
        Console.WriteLine("App entering background state.");
    }
    // not guaranteed that this will run
    public override void WillTerminate(UIApplication application)
    {
        Console.WriteLine("App is terminating.");
    }
    
  3. Запустите приложение в симуляторе или на устройстве. OnActivated вызывается при запуске приложения. Теперь приложение находится в активном состоянии.

  4. Нажмите кнопку "Главная" на симуляторе или устройстве, чтобы перенести приложение в фон. OnResignActivationи DidEnterBackground будет вызываться как приложение переходит из Active состояния в Inactive состояние.Backgrounded Так как в фоновом режиме код приложения не выполняется, приложение считается приостановленным в памяти.

  5. Вернитесь к приложению, чтобы вернуть его на передний план. WillEnterForeground и OnActivated оба будут вызываться:

    State changes printed to the console

    Следующая строка кода в контроллере представления выполняется, когда приложение ввело передний план с фона и изменяет текст, отображаемый на экране:

    UIApplication.Notifications.ObserveWillEnterForeground ((sender, args) => {
        label.Text = "Welcome back!";
    });
    
  6. Нажмите кнопку "Главная", чтобы поместить приложение в фон. Затем дважды коснитесь кнопки "Главная ", чтобы открыть переключатель приложения. В i Телефон X проводите пальцем вверх снизу экрана:

    The application switcher

  7. Найдите приложение в приложении Switcher и проводите пальцем вверх, чтобы удалить его (в iOS 11 долго нажимайте, пока красные значки не появятся в углу):

    Swipe up to remove a running app

iOS завершит работу приложения. Обратите внимание, что не вызывается, WillTerminate так как приложение уже приостановлено в фоновом режиме.