天天看點

#打卡不停更#【FFH】"Context上下文"到底是什麼?"Context上下文"到底是什麼?

(#打卡不停更#【FFH】"Context上下文"到底是什麼?)

"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上下文"到底是什麼?"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上下文"到底是什麼?"Context上下文"到底是什麼?

粗體擷取此ability的目前顯示方向:

import featureAbility from '@ohos.ability.featureAbility'
onInit(){
        let context = featureAbility.getContext();//建立Context執行個體對象
        context.getDisplayOrientation().then((data) => {
            console.info("CHW=======================>getDisplayOrientationCallback====================>");
            console.info("CHW====>data====>" + JSON.stringify(data));
        });
}
           
#打卡不停更#【FFH】"Context上下文"到底是什麼?"Context上下文"到底是什麼?

改變此ability的目前顯示方向為橫屏顯示:

#打卡不停更#【FFH】"Context上下文"到底是什麼?"Context上下文"到底是什麼?
import featureAbility from '@ohos.ability.featureAbility'
import bundle from '@ohos.bundle'   //導入Bundle子產品以擷取螢幕顯示方向DisplayOrientation對象
onInit(){
        let context = featureAbility.getContext();//建立Context執行個體對象
        let orientation=bundle.DisplayOrientation.LANDSCAPE;//設定方向參數為橫屏
        context.setDisplayOrientation(orientation).then((data) => {
            console.info("CHW=======================>setDisplayOrientationCallback====================>");
            console.info("CHW====>data====>" + JSON.stringify(data));
        });
}
           
#打卡不停更#【FFH】"Context上下文"到底是什麼?"Context上下文"到底是什麼?

本文作者:Hagon

繼續閱讀