Context上下文--到底是什么?

系统 OpenHarmony
这篇文章就来简单聊聊"Context上下文"到底是什么?

什么是Context上下文

在我刚开始看到Context上下文的时候觉得比较抽象,只知道它是用来拉起权限或者获取应用的一些信息,但是却一直不知道它到底是什么,设计者是怎么定义的?这篇文章就来简单聊聊"Context上下文"到底是什么?
我们先从表层上看,Context翻译过来字面意思就是上下文,从初高中学语文的知识来看,意思就是文章的语境,背景和环境等等跟文章相联系的内容。

但是我们将其代入到程序中,其实也可以从语文的角度也可以解释得通,就是抽象化了一下,Context这个字段在程序中通俗的讲就是指执行一个任务所需要的相关信息,这个任务可以是一个进程,一个线程。而在OpenHarmony和HarmonyOS北向开发中分别为ability与application提供了Context上下文的能力,包括访问ability或application的任务资源、请求和验证权限等。

在HarmonyOS&OpenHarmony中的Context应用上下文概述

Context是应用中对象的上下文,提供获取应用程序环境信息的能力。

OpenHarmony的应用框架分为FA模型和Stage两种模型。对应存在两套Context机制适配两种应用框架模型,其中application/BaseContext属于通用的Context基类,里面包含一个属性stageMode,用来区分开发模型是FA还是Stage。

Context会在后续开发获取系统信息能力的过程中经常遇到,所以必须对Context上下文含义以及如何使用有一定的了解。

下面来简单用代码实现几个例子,工程创建参考上一章节即可。

代码实操

接下来先用Context上下文获取有关当前应用程序的信息

import featureAbility from '@ohos.ability.featureAbility'
import bundle from '@ohos.bundle'
onInit(){
let context = featureAbility.getContext();//创建Context实例对象
context.getApplicationInfo().then((data) => {
console.info("CHW=====================>getApplicationInfoCallback===================>");
console.info("CHW====>data====>" + JSON.stringify(data))
});
}

将代码编译成HAP包然后安装到开发板或者手机上,就可以将调试台切换到log窗口,查看输出的调试信息,可以看到第三行输出的就是我们要有关当前应用程序的信息。

#打卡不停更#【FFH】"Context上下文"到底是什么?-开源基础软件社区

获取当前ability的包名:

import featureAbility from '@ohos.ability.featureAbility'
import bundle from '@ohos.bundle'
onInit(){
let context = featureAbility.getContext();//创建Context实例对象
context.getBundleName().then((data) => {
console.info("CHW=======================>getBundleNameCallback====================>");
console.info("CHW====>data====>" + JSON.stringify(data));
});
}

#打卡不停更#【FFH】"Context上下文"到底是什么?-开源基础软件社区

粗体获取此ability的当前显示方向:

import featureAbility from '@ohos.ability.featureAbility'
onInit(){
let context = featureAbility.getContext();//创建Context实例对象
context.getDisplayOrientation().then((data) => {
console.info("CHW=======================>getDisplayOrientatinotallow====================>");
console.info("CHW====>data====>" + JSON.stringify(data));
});
}

#打卡不停更#【FFH】"Context上下文"到底是什么?-开源基础软件社区

改变此ability的当前显示方向为横屏显示:

#打卡不停更#【FFH】"Context上下文"到底是什么?-开源基础软件社区

import featureAbility from '@ohos.ability.featureAbility'
import bundle from '@ohos.bundle' //导入Bundle模块以获取屏幕显示方向DisplayOrientation对象
onInit(){
let context = featureAbility.getContext();//创建Context实例对象
let orientatinotallow=bundle.DisplayOrientation.LANDSCAPE;//设置方向参数为横屏
context.setDisplayOrientation(orientation).then((data) => {
console.info("CHW=======================>setDisplayOrientatinotallow====================>");
console.info("CHW====>data====>" + JSON.stringify(data));
});
}

#打卡不停更#【FFH】"Context上下文"到底是什么?-开源基础软件社区

​想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com​​。

责任编辑:jianghua 来源: 51CTO开源基础软件社区
相关推荐

2017-05-11 14:00:02

Flask请求上下文应用上下文

2021-01-26 05:19:56

语言Go Context

2012-12-31 10:01:34

SELinuxSELinux安全

2022-11-03 08:29:32

编程管理器协议

2022-09-14 13:13:51

JavaScript上下文

2020-09-22 08:22:28

快充

2010-11-01 01:25:36

Windows NT

2020-09-27 06:53:57

MavenCDNwrapper

2020-10-14 06:22:14

UWB技术感知

2011-04-27 09:30:48

企业架构

2022-09-15 08:01:14

继承基础设施基础服务

2021-07-07 05:07:15

JDKIterator迭代器

2021-09-01 23:29:37

Golang语言gRPC

2021-01-21 21:24:34

DevOps开发工具

2022-10-08 00:00:00

Spring数据库项目

2020-03-05 10:28:19

MySQLMRR磁盘读

2023-07-12 15:32:49

人工智能AI

2021-02-05 10:03:31

区块链技术智能

2024-02-04 00:01:00

云原生技术容器

2019-10-30 10:13:15

区块链技术支付宝
点赞
收藏

51CTO技术栈公众号