鸿蒙 HarmonyOS 实战 -Stage 模型(应用上下文 Context)
🚀前言
应用上下文(Context)是应用程序的全局信息的接口。它是一个抽象类,提供了访问应用程序环境的方法和资源的方法。应用上下文可以用于获取应用程序的资源、启动 Activity、发送广播等。每个应用程序都有一个应用上下文对象,它在整个应用程序的生命周期内都是唯一的。通过应用上下文,我们可以获得应用程序的全局状态和信息,以及访问应用程序的资源和功能。
🚀一、应用上下文 Context
🔎1.概述
🦋1.1 基本概念
在 HarmonyOS 中,Stage 模型是一种应用程序的结构模型,它涵盖了应用程序的整个生命周期。而应用上下文 Context 则是在 Stage 模型中,表示应用程序的执行环境。
Context 提供了访问应用程序资源和服务的接口。它包含了应用程序的运行状态和环境信息,如应用程序的包名、进程 ID、用户 ID 等。通过 Context,应用程序可以获取应用程序的资源,如布局、字符串、动画等,也可以调用系统提供的服务,如获取位置信息、访问传感器等。
此外,Context 还提供了一些方法用于启动 Activity、Service、BroadcastReceiver 等组件,并且可以发送和接收 Intent,实现不同组件之间的通信。Context 还能够管理应用程序的生命周期,比如销毁应用程序、保存和恢复数据等。
![](https://static001.geekbang.org/infoq/c3/c38c1a380d06e9534716a1a1afdb62b4.png)
![](https://static001.geekbang.org/infoq/c8/c8cf16832091a25b97b0c22c10fd390e.png)
🦋1.2 获取方式
![](https://static001.geekbang.org/infoq/c7/c79934c7bad48649c6677bf2a4fcba35.png)
☀️1.2.1 UIAbilityContext
提供操作 Ability、获取 Ability 的配置信息、应用向用户申请授权等能力。
![](https://static001.geekbang.org/infoq/1b/1b7e41a8ff2f1538c8c0e776a6c375b3.png)
☀️1.2.2 AbilityStageContext
和基类 Context 相比,额外提供 HapModuleInfo、Configuration 等信息
☀️1.2.3 ApplicationContext
ApplicationContext 在基类 Context 的基础上提供了订阅应用内 Ability 的生命周期的变化、订阅系统内存变化和订阅应用内系统环境的变化的能力,在 UIAbility、ExtensionAbility、AbilityStage 中均可以获取。
🔎2.Context 的典型使用场景
🦋2.1 获取应用文件路径
☀️2.1.1 ApplicationContext
![](https://static001.geekbang.org/infoq/54/54a154ba5e05a726f23ef2d3866b24b7.png)
☀️2.1.2 其他 Context
![](https://static001.geekbang.org/infoq/0f/0ff0402ca46cf8b8d46011a66ad108fe.png)
☀️2.1.3 案例
![](https://static001.geekbang.org/infoq/3c/3c94859e9f54c8ae9db17df65fd813f6.png)
🦋2.2 获取和修改加密分区
![](https://static001.geekbang.org/infoq/dc/dcf80930106778cf2cbb0e9f3eb1cc6c.png)
![](https://static001.geekbang.org/infoq/d1/d171e8ae4c62d96a62f6142a50d8573b.png)
🦋2.3 创建其他应用或其他 Module 的 Context
在 HarmonyOS 中,createModuleContext 是一个函数,用于创建模块上下文(ModuleContext)对象。模块上下文用于管理模块的生命周期,并提供模块间通信的机制。
使用 createModuleContext 函数,可以在模块的入口处创建一个模块上下文对象,并将其传递给模块的其他组件。通过模块上下文对象,可以获取到模块的配置信息、上下文等相关的资源。
🦋2.4 订阅进程内 Ability 生命周期变化
文章转载自:蜀道山QAQ
评论