
什么是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窗口,查看輸出的調試信息,可以看到第三行輸出的就是我們要有關當前應用程序的信息。

獲取當前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));
});
}

粗體獲取此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));
});
}

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

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));
});
}

??想了解更多關于開源的內容,請訪問:??
??51CTO 開源基礎軟件社區??
??https://ost.51cto.com??。