Xamarin.iOS 的应用程序生命周期演示
本文和示例代码演示了 iOS 中的四个应用程序状态,以及 AppDelegate
方法在向应用程序通知状态的更改时间方面的作用。 每当应用更改状态时,应用程序都会将更新信息输出到控制台:
演练
在 LifecycleDemo 解决方案的 Lifecycle 项目中打开。
打开
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."); }
在模拟器或设备上启动应用程序。
OnActivated
将在应用启动时调用。 应用程序现在处于活动状态。点击模拟器或设备上的“主屏幕”按钮,将应用程序切换到后台。 当应用从
Active
状态转换到Inactive
状态或进入Backgrounded
状态时,将调用OnResignActivation
和DidEnterBackground
。 由于后台没有要执行的应用程序代码,因此应用程序被视为在内存中挂起。导航回应用,将其切换回前台。
WillEnterForeground
和OnActivated
两者都将被调用:当应用程序从后台进入前台并更改屏幕上显示的文本时,将执行视图控制器中的以下代码行:
UIApplication.Notifications.ObserveWillEnterForeground ((sender, args) => { label.Text = "Welcome back!"; });
按“主屏幕”按钮将应用程序切换到后台。 然后,双击“主屏幕”按钮,调出应用程序切换器。 在 iPhone X 上,从屏幕底部向上轻扫:
在应用切换器中找到应用程序,然后向上轻扫以将其删除(在 iOS 11 上,长按直到角落显示红色图标):
iOS 将终止应用程序。 请注意,由于应用程序已在后台挂起,因此不会调用 WillTerminate
。