Xamarin.Forms 应用生命周期(App.xaml.cs)

新建项目步骤

  1. 打开 Visual Studio
  2. 创建新项目,选择 Xamarin.Forms 空白应用,项目命名 AppLifecycleTutorial
  3. 在解决方案资源管理器,打开共享项目,双击 App.xaml.cs 文件

重写生命周期方法

打开 App.xaml.cs,在 App 类内部重写三个生命周期回调方法:

using Xamarin.Forms;

namespace AppLifecycleTutorial
{
    public partial class App : Application
    {
        public App()
        {
            InitializeComponent();

            MainPage = new MainPage();
        }

        /// <summary>
        /// 应用启动时触发,只执行一次
        /// </summary>
        protected override void OnStart()
        {
            Console.WriteLine("OnStart");
        }

        /// <summary>
        /// 应用进入后台(最小化、切换别的App、锁屏)触发
        /// 注意:应用被系统杀死时,**不会执行 OnSleep**
        /// </summary>
        protected override void OnSleep()
        {
            Console.WriteLine("OnSleep");
        }

        /// <summary>
        /// 应用从后台切回前台恢复显示时触发
        /// </summary>
        protected override void OnResume()
        {
            Console.WriteLine("OnResume");
        }
    }
}
Code language: PHP (php)

三个生命周期方法说明

方法触发时机说明
OnStart()应用程序启动App第一次运行调用,整个进程生命周期只调用1次;从后台切回前台不会再次执行
OnSleep()应用转入后台用户按Home键、打开其他App、锁屏,App被遮挡进入后台;在这里保存临时状态、数据
OnResume()后台切回前台App从后台重新回到可见界面;注意:刚启动不会调用OnResume,只有从后台恢复才调用

执行流程

  1. App冷启动OnStart() → 应用运行在前台
  2. 按Home键切后台:OnSleep()
  3. 重新点开App回到前台:OnResume()
  4. 再次切后台:OnSleep()

重要注意:

  1. iOS/Android平台行为有差异:Android上内存紧张,系统直接杀掉进程,此时不会执行OnSleep,不要把完全依赖保存逻辑只写在OnSleep;
  2. OnStart 只会程序刚打开执行,后台唤醒不会再次进入OnStart;
  3. Console.WriteLine 在VS输出窗口(输出窗口,选择“调试”)查看打印日志。

补充

Xamarin.Forms 的生命周期是应用级生命周期(整个App),不等于页面 Page 的生命周期(OnAppearing / OnDisappearing)。

  • App 级别:OnStart / OnSleep / OnResume → 管控整个程序
  • Page页面级别:OnAppearing(页面即将显示)、OnDisappearing(页面即将消失),管控单个页面。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注