• Xamarin.Forms之应用类和应用生命周期


    App Class

    Application基类提供以下功能,这些功能在项目的默认App子类中公开:

    • MainPage属性,可以在其中设置应用程序的初始页面。
    • 持久属性字典,用于存储生命周期状态更改中的简单值。
    • 一个静态Current属性,其中包含对当前应用程序对象的引用。

    字典属性

    Application子类具有静态的Properties字典,该字典可用于存储数据,尤其是在OnStart,OnSleep和OnResume方法中使用的数据。 可以使用Application.Current.Properties从Xamarin.Forms代码中的任何位置进行访问。

    属性字典使用字符串键并存储对象object值

    例如,您可以在代码中的任何位置(选择项目,在页面的OnDisappearing方法或OnSleep方法中)设置持久性“ id”属性,如下所示:

    Application.Current.Properties ["id"] = someClass.ID;

    然后,您可以在OnStart或OnResume方法中使用此值以某种方式重新创建用户的体验。 属性字典存储对象,因此您需要在使用它之前强制转换其值。

    if (Application.Current.Properties.ContainsKey("id"))
    {
        var id = Application.Current.Properties ["id"] as int;
        // do something with id
    }

    在访问密钥之前,请始终检查key是否存在,以防止发生意外错误。

    注:“属性”字典只能序列化基本类型以进行存储。 尝试存储其他类型(例如List <string>)可能会失败 且没有提示

    持久化

    属性字典会自动保存到设备中,当应用程序从后台返回或重新启动后,添加到字典中的数据将可用。

    Xamarin.Forms 1.4在Application类上引入了另一个方法-SavePropertiesAsync()-可以调用该方法来主动保留Properties字典。 这是为了让您可以在重要更新后保存属性,而不用冒着崩溃或被操作系统杀死而使它们不被序列化的风险。

    The Application class
    下面显示了完整的Application类实现,以供参考:

    public class App : Xamarin.Forms.Application
    {
        public App ()
        {
            MainPage = new ContentPage { Title = "App Lifecycle Sample" }; // your page here
        }
    
        protected override void OnStart()
        {
            // Handle when your app starts
            Debug.WriteLine ("OnStart");
        }
    
        protected override void OnSleep()
        {
            // Handle when your app sleeps
            Debug.WriteLine ("OnSleep");
        }
    
        protected override void OnResume()
        {
            // Handle when your app resumes
            Debug.WriteLine ("OnResume");
        }
    }
    View Code

    然后,在每个特定于平台的项目中实例化此类,并将其传递到LoadApplication方法,该方法是MainPage加载并显示给用户的位置。 

    App Lifecycle

    Application基类提供以下功能:

    • 生命周期方法OnStart,OnSleep和OnResume。
    • 页面导航事件PageAppearing,PageDisappearing。(可用于要跟踪页面在屏幕上出现/消失的情况)
    • 模态导航事件ModalPushing,ModalPushed,ModalPopping和ModalPopped。

    生命周期方法

    Application类包含三个虚拟方法,可以重写它们以响应生命周期更改:

    • OnStart - called when the application starts.
    • OnSleep - called each time the application goes to the background(程序进入后台时).
    • OnResume - called when the application is resumed, after being sent to the background(从后台恢复时).

    注:没有终止应用程序的方法。 在正常情况下(即不是崩溃),应用程序将在OnSleep状态下终止,而无需任何其他代码通知

  • 相关阅读:
    js 常见业务数据数组转换操作 时间复杂度降级O(n)的尝试
    【20220226】连岳摘抄
    【20220227】连岳摘抄
    【20220301】连岳摘抄
    【20220225】连岳摘抄
    【20220228】连岳摘抄
    【20220224】事情还是要乐观对待
    Atcoder Beginner Contest 208 F Cumulative Sum(拉格朗日插值)
    Solution 「CF 1622F」Quadratic Set
    Solution 「CF 923F」Public Service
  • 原文地址:https://www.cnblogs.com/peterYong/p/11976559.html
Copyright © 2020-2023  润新知