当前位置: 首页 > 科技观察

上下文-到底是什么?

时间:2023-03-13 19:44:47 科技观察

Context上下文是什么?刚开始看到Context上下文的时候,我觉得很抽象。我只知道它是用来拉取权限或者获取应用程序的一些信息的,但一直不知道它是什么。设计师是如何定义的?这篇文章就简单说一下什么是“Context语境”?我们先看表面。翻译过来,Context字面意思就是语境。从初高中语文知识来看,指的是与文章有关的语境、背景、环境等。但是我们把它放到程序里,其实也可以从语言的角度来解释,它是抽象的,程序中Context这个字段一般是指执行一个任务所需要的相关信息,这个任务可以是一个进程,一个线程。在OpenHarmony和HarmonyOS的北向开发中,分别为ability和application提供了Context上下文能力,包括任务资源的访问,ability或application的权限请求和验证。HarmonyOS&OpenHarmonyContext概述Context是应用中对象的上下文,提供获取应用环境信息的能力。OpenHarmony的应用框架分为两种模型:FA模型和Stage。相应的,有两套Context机制来适配两种应用框架模型,其中application/BaseContext属于通用的Context基类,其中包含一个属性stageMode,用于区分开发模型是FA还是Stage。Context在后续开发中会经常遇到获取系统信息的能力,所以必须对Context的含义以及如何使用有一定的了解。下面简单的用代码实现几个例子,工程创建参考前面的章节。代码实践接下来使用Context上下文获取当前应用的信息:importfeatureAbilityfrom'@ohos.ability.featureAbility'//创建Context实例对象context.getApplicationInfo().then((data)=>{console.info("CHW======================>getApplicationInfoCallback====================>");console.info("CHW====>data====>"+JSON.stringify(data))});}将代码编译成HAP包安装到开发板或手机上,即可将调试控制台切换到日志窗口,查看输出的调试信息。可以看到输出的第三行是我们想要的当前应用的信息。获取当前能力的包名:importfeatureAbilityfrom'@ohos.ability.featureAbility'importbundlefrom'@ohos.bundle'onInit(){letcontext=featureAbility.getContext();//创建一个Context实例对象context.getBundleName().then((data)=>{console.info("CHW=======================>getBundleNameCallback=====================>");console.info("CHW====>data====>"+JSON.stringify(data));});}boldgetthis能力的当前显示方向:importfeatureAbilityfrom'@ohos.ability.featureAbility'onInit(){letcontext=featureAbility.getContext();//创建一个Context实例对象context.getDisplayOrientation().then((data)=>{console.info("CHW========================>getDisplayOrientatinotallow=====================>");console.info("CHW====>data====>"+JSON.stringify(data));});}改变当前显示方向这种横向显示的能力:importfeatureAbilityfrom'@ohos.ability.featureAbility'importbundlefrom'@ohos.bundle'//导入Bundle模块获取屏幕屏幕显示方向DisplayOrientationobjectonInit(){letcontext=featureAbility.getContext();//创建一个Context实例对象letorientatinotallow=bundle.DisplayOrientation.LANDSCAPE;//设置orientation参数为landscapecontext.setDisplayOrientation(orientation).then((data)=>{console.info("CHW========================>setDisplayOrientatinotallow======================>");console.info("CHW====>data====>"+JSON.stringify(data));});}想要了解更多开源内容请访问:开源基础软件社区https://ost.51cto.com