[ 鸿蒙应用开发 ] 应用框架
Context是应用中对象的上下文,其提供了应用的一些基础信息,例如resourceManager(资源管理)、applicationInfo(当前应用信息)、dir(应用文件路径)、area(文件分区)等,以及应用的一些基本方法,例如getApplicationContext()等。specified启动模式为指定实例模式,针对一些特殊场景使用(例如文档应用中每次新建文档希望都能新建一个文档实例
1.AbilityStage
这是在UIAbility之前创建的,如果想要将生命周期提前,比如在一些SDK中,可以在这里进行处理.
AbilityStage是一个Module级别的组件容器,应用的HAP在首次加载时会创建一个AbilityStage实例,可以对该Module进行初始化等操作。AbilityStage与Module一一对应,即一个Module拥有一个AbilityStage。
AbilityStage拥有onCreate()、onDestroy()生命周期回调和onAcceptWant()、onConfigurationUpdate()、onMemoryLevel()事件回调等。
2.Stage模型开发
每个Entry类型或者Feature类型的HAP在运行期都有一个AbilityStage实例,当HAP中的代码首次被加载到进程中的时候,系统会先创建AbilityStage实例。
Stage模型提供UIAbility和ExtensionAbility两种类型的组件,这两种组件都有具体的类承载,支持面向对象的开发方式。
一个HAP包中可以包含一个或多个UIAbility/ExtensionAbility组件,这些组件在运行时共用同一个AbilityStage实例。当HAP中的代码(无论是UIAbility组件还是ExtensionAbility组件)首次被加载到进程中的时候,系统会先创建对应的AbilityStage实例。
UIAbility实例通过WindowStage持有了一个主窗口,该主窗口为ArkUI提供了绘制区域,可以加载不同的ArkUI页面。
UIAbility组件和各种ExtensionAbility组件的派生类都有各自不同的Context类,他们都继承自基类Context,但是各自又根据所属组件,提供不同的能力。
3.UIAbility组件启动模式
singleton启动模式
每次调用startAbility()方法时,如果应用进程中该类型的UIAbility实例已经存在,则复用系统中的UIAbility实例。系统中只存在唯一一个该UIAbility实例,即在最近任务列表中只存在一个该类型的UIAbility实例。
multiton启动模式
multiton启动模式为多实例模式,每次调用startAbility()方法时,都会在应用进程中创建一个新的该类型UIAbility实例。即在最近任务列表中可以看到有多个该类型的UIAbility实例。这种情况下可以将UIAbility配置为multiton(多实例模式)。
specified启动模式
specified启动模式为指定实例模式,针对一些特殊场景使用(例如文档应用中每次新建文档希望都能新建一个文档实例,重复打开一个已保存的文档希望打开的都是同一个文档实例)。
4.UIAbilityContext
通过UIAbilityContext可以获取UIAbility的相关配置信息,如包代码路径、Bundle名称、Ability名称和应用程序需要的环境状态等属性信息,以及可以获取操作UIAbility实例的方法(如startAbility()、connectServiceExtensionAbility()、terminateSelf()等)。
如果需要在页面中获得当前Ability的Context,可调用getContext接口获取当前页面关联的UIAbilityContext或ExtensionContext。
直接使用getContext可能导致UI上下文不明确的问题,建议使用getUIContext获取UIContext实例,并使用getHostContext调用绑定实例的getContext。
5.Context
Context是应用中对象的上下文,其提供了应用的一些基础信息,例如resourceManager(资源管理)、applicationInfo(当前应用信息)、dir(应用文件路径)、area(文件分区)等,以及应用的一些基本方法,例如getApplicationContext()等。UIAbility组件和各种ExtensionAbility派生类组件都有各自不同的Context类。分别有基类Context、ApplicationContext、AbilityStageContext、UIAbilityContext、ExtensionContext等Context。
6.Context的典型使用场景
获取应用文件路径
获取和修改加密分区
获取本应用中其他module的context
订阅进程内UIAbility生命周期变化
更多推荐
所有评论(0)