Xamarin.iOS 的应用程序生命周期演示

本文和示例代码演示了 iOS 中的四个应用程序状态,以及 AppDelegate 方法在向应用程序通知状态的更改时间方面的作用。 每当应用更改状态时,应用程序都会将更新信息输出到控制台:

示例应用

每当应用更改状态时,应用都会将更新信息输出到控制台

演练

  1. 在 LifecycleDemo 解决方案的 Lifecycle 项目中打开

  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. 点击模拟器或设备上的“主屏幕”按钮,将应用程序切换到后台。 当应用从 Active 状态转换到 Inactive 状态或进入 Backgrounded 状态时,将调用 OnResignActivationDidEnterBackground。 由于后台没有要执行的应用程序代码,因此应用程序被视为在内存中挂起

  5. 导航回应用,将其切换回前台。 WillEnterForegroundOnActivated 两者都将被调用:

    输出到控制台的状态更改

    当应用程序从后台进入前台并更改屏幕上显示的文本时,将执行视图控制器中的以下代码行:

    UIApplication.Notifications.ObserveWillEnterForeground ((sender, args) => {
        label.Text = "Welcome back!";
    });
    
  6. 按“主屏幕”按钮将应用程序切换到后台。 然后,双击“主屏幕”按钮,调出应用程序切换器。 在 iPhone X 上,从屏幕底部向上轻扫:

    应用程序切换器

  7. 在应用切换器中找到应用程序,然后向上轻扫以将其删除(在 iOS 11 上,长按直到角落显示红色图标):

    向上轻扫以移除正在运行的应用

iOS 将终止应用程序。 请注意,由于应用程序已在后台挂起,因此不会调用 WillTerminate