0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙Ability Kit(程序框架服務(wù))【應(yīng)用上下文Context】

jf_46214456 ? 來(lái)源:jf_46214456 ? 作者:jf_46214456 ? 2024-06-06 09:22 ? 次閱讀

應(yīng)用上下文Context

概述

[Context]是應(yīng)用中對(duì)象的上下文,其提供了應(yīng)用的一些基礎(chǔ)信息,例如resourceManager(資源管理)、applicationInfo(當(dāng)前應(yīng)用信息)、dir(應(yīng)用文件路徑)、area(文件分區(qū))等,以及應(yīng)用的一些基本方法,例如createBundleContext()、getApplicationContext()等。UIAbility組件和各種ExtensionAbility派生類組件都有各自不同的Context類。分別有基類Context、ApplicationContext、AbilityStageContext、UIAbilityContext、ExtensionContext、ServiceExtensionContext等Context。

  • 各類Context的繼承關(guān)系
    ![context-inheritance]
  • 各類Context的持有關(guān)系
    ![context-holding]
  • 各類Context的獲取方式
    • 獲取[UIAbilityContext]。每個(gè)UIAbility中都包含了一個(gè)Context屬性,提供操作應(yīng)用組件、獲取應(yīng)用組件的配置信息等能力。

      import UIAbility from '@ohos.app.ability.UIAbility';
      import type AbilityConstant from '@ohos.app.ability.AbilityConstant';
      import type Want from '@ohos.app.ability.Want';
      export default class EntryAbility extends UIAbility {
        onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
          let uiAbilityContext = this.context;
          //...
        }
      }
      

      說(shuō)明:
      開發(fā)前請(qǐng)熟悉鴻蒙開發(fā)指導(dǎo)文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]
      頁(yè)面中獲取UIAbility實(shí)例的上下文信息請(qǐng)參見[獲取UIAbility的上下文信息]。

    • 獲取特定場(chǎng)景[ExtensionContext]。以ServiceExtensionContext為例,表示后臺(tái)服務(wù)的上下文環(huán)境,繼承自ExtensionContext,提供后臺(tái)服務(wù)相關(guān)的接口能力。

      import ServiceExtensionAbility from '@ohos.app.ability.ServiceExtensionAbility';
      import type Want from '@ohos.app.ability.Want';
      export default class ServiceExtAbility extends ServiceExtensionAbility {
        onCreate(want: Want) {
          let serviceExtensionContext = this.context;
          //...
        }
      }
      
    • 獲取[AbilityStageContext]。Module級(jí)別的Context,和基類Context相比,額外提供HapModuleInfo、Configuration等信息。

      import AbilityStage from '@ohos.app.ability.AbilityStage';
      export default class MyAbilityStage extends AbilityStage {
        onCreate(): void {
          let abilityStageContext = this.context;
          //...
        }
      }
      
    • 獲取[ApplicationContext]。應(yīng)用級(jí)別的Context。ApplicationContext在基類Context的基礎(chǔ)上提供了訂閱應(yīng)用內(nèi)應(yīng)用組件的生命周期的變化、訂閱系統(tǒng)內(nèi)存變化和訂閱應(yīng)用內(nèi)系統(tǒng)環(huán)境的變化的能力,在UIAbility、ExtensionAbility、AbilityStage中均可以獲取。

      import UIAbility from '@ohos.app.ability.UIAbility';
      import type AbilityConstant from '@ohos.app.ability.AbilityConstant';
      import type Want from '@ohos.app.ability.Want';
      export default class EntryAbility extends UIAbility {
        onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
          let applicationContext = this.context.getApplicationContext();
          //...
        }
      }
      

Context的典型使用場(chǎng)景

本章節(jié)通過(guò)如下典型場(chǎng)景來(lái)介紹Context的用法:

  • [獲取應(yīng)用文件路徑]
  • [獲取和修改加密分區(qū)]
  • [獲取本應(yīng)用中其他module的context]
  • [訂閱進(jìn)程內(nèi)UIAbility生命周期變化]

獲取應(yīng)用文件路徑

[基類Context]提供了獲取應(yīng)用文件路徑的能力,ApplicationContext、AbilityStageContext、UIAbilityContext和ExtensionContext均繼承該能力。應(yīng)用文件路徑屬于應(yīng)用沙箱路徑,具體請(qǐng)參見[應(yīng)用沙箱目錄](méi)。

上述各類Context獲取的應(yīng)用文件路徑有所不同。

  • 通過(guò)ApplicationContext獲取應(yīng)用級(jí)別的應(yīng)用文件路徑,此路徑是應(yīng)用全局信息推薦的存放路徑,這些文件會(huì)跟隨應(yīng)用的卸載而刪除。

    屬性路徑
    bundleCodeDir<路徑前綴>/el1/bundle
    cacheDir<路徑前綴>/<加密等級(jí)>/base/cache
    filesDir<路徑前綴>/<加密等級(jí)>/base/files
    preferencesDir<路徑前綴>/<加密等級(jí)>/base/preferences
    tempDir<路徑前綴>/<加密等級(jí)>/base/temp
    databaseDir<路徑前綴>/<加密等級(jí)>/database
    distributedFilesDir<路徑前綴>/el2/distributedFiles
    cloudFileDir12+<路徑前綴>/el2/hmdfs/cloud/data

    示例代碼如下所示。

    import common from '@ohos.app.ability.common';
    import hilog from '@ohos.hilog';
    import promptAction from '@ohos.promptAction';
    
    const TAG: string = '[Page_Context]';
    const DOMAIN_NUMBER: number = 0xFF00;
    @Entry
    @Component
    struct Page_Context {
      private context = getContext(this) as common.UIAbilityContext;
    
      build() {
        Column() {
          //...
          List({ initialIndex: 0 }) {
            ListItem() {
              Row() {
                //...
              }
              .onClick(() = > {
                let applicationContext = this.context.getApplicationContext();
                let cacheDir = applicationContext.cacheDir;
                let tempDir = applicationContext.tempDir;
                let filesDir = applicationContext.filesDir;
                let databaseDir = applicationContext.databaseDir;
                let bundleCodeDir = applicationContext.bundleCodeDir;
                let distributedFilesDir = applicationContext.distributedFilesDir;
                let preferencesDir = applicationContext.preferencesDir;
                // 獲取應(yīng)用文件路徑
                let filePath = tempDir + 'test.txt';
                hilog.info(DOMAIN_NUMBER, TAG, `filePath: ${filePath}`);
                if (filePath !== null) {
                  promptAction.showToast({
                    message: filePath
                  });
                }
              })
            }
            //...
          }
          //...
        }
        //...
      }
    }
    
  • 通過(guò)AbilityStageContext、UIAbilityContext、ExtensionContext獲取HAP級(jí)別的應(yīng)用文件路徑。此路徑是HAP相關(guān)信息推薦的存放路徑,這些文件會(huì)跟隨HAP的卸載而刪除,但不會(huì)影響應(yīng)用級(jí)別路徑的文件,除非該應(yīng)用的HAP已全部卸載。

    屬性路徑
    bundleCodeDir<路徑前綴>/el1/bundle
    cacheDir<路徑前綴>/<加密等級(jí)>/base/haps//cache
    filesDir<路徑前綴>/<加密等級(jí)>/base/haps//files
    preferencesDir<路徑前綴>/<加密等級(jí)>/base/haps//preferences
    tempDir<路徑前綴>/<加密等級(jí)>/base/haps//temp
    databaseDir<路徑前綴>/<加密等級(jí)>/database/ ****
    distributedFilesDir<路徑前綴>/el2/distributedFiles/ ****
    cloudFileDir12+<路徑前綴>/el2/hmdfs/cloud/data/ ****

    示例代碼如下所示。

    import common from '@ohos.app.ability.common';
    import hilog from '@ohos.hilog';
    import promptAction from '@ohos.promptAction';
    
    const TAG: string = '[Page_Context]';
    const DOMAIN_NUMBER: number = 0xFF00;
    @Entry
    @Component
    struct Page_Context {
      private context = getContext(this) as common.UIAbilityContext;
    
      build() {
        Column() {
          //...
          List({ initialIndex: 0 }) {
            ListItem() {
              Row() {
                //...
              }
              .onClick(() = > {
                let cacheDir = this.context.cacheDir;
                let tempDir = this.context.tempDir;
                let filesDir = this.context.filesDir;
                let databaseDir = this.context.databaseDir;
                let bundleCodeDir = this.context.bundleCodeDir;
                let distributedFilesDir = this.context.distributedFilesDir;
                let preferencesDir = this.context.preferencesDir;
                // 獲取應(yīng)用文件路徑
                let filePath = tempDir + 'test.txt';
                hilog.info(DOMAIN_NUMBER, TAG, `filePath: ${filePath}`);
                if (filePath !== null) {
                  promptAction.showToast({
                    message: filePath
                  });
                }
              })
            }
            //...
          }
          //...
        }
        //...
      }
    }
    

獲取和修改加密分區(qū)

應(yīng)用文件加密是一種保護(hù)數(shù)據(jù)安全的方法,可以使得文件在未經(jīng)授權(quán)訪問(wèn)的情況下得到保護(hù)。在不同的場(chǎng)景下,應(yīng)用需要不同程度的文件保護(hù)。

在實(shí)際應(yīng)用中,開發(fā)者需要根據(jù)不同場(chǎng)景的需求選擇合適的加密分區(qū),從而保護(hù)應(yīng)用數(shù)據(jù)的安全。通過(guò)合理使用不同級(jí)別的加密分區(qū),可以有效提高應(yīng)用數(shù)據(jù)的安全性。關(guān)于不同分區(qū)的權(quán)限說(shuō)明,詳見[ContextConstant]的AreaMode。

  • EL1:對(duì)于私有文件,如鬧鈴、壁紙等,應(yīng)用可以將這些文件放到設(shè)備級(jí)加密分區(qū)(EL1)中,以保證在用戶輸入密碼前就可以被訪問(wèn)。
  • EL2:對(duì)于更敏感的文件,如個(gè)人隱私信息等,應(yīng)用可以將這些文件放到更高級(jí)別的加密分區(qū)(EL2)中,以保證更高的安全性。
  • EL3:對(duì)于應(yīng)用中的記錄步數(shù)、文件下載、音樂(lè)播放,需要在鎖屏?xí)r讀寫和創(chuàng)建新文件,放在(EL3)的加密分區(qū)比較合適。
  • EL4:對(duì)于用戶安全信息相關(guān)的文件,鎖屏?xí)r不需要讀寫文件、也不能創(chuàng)建文件,放在(EL4)的加密分區(qū)更合適。

要實(shí)現(xiàn)獲取和設(shè)置當(dāng)前加密分區(qū),可以通過(guò)讀寫[Context]的area屬性來(lái)實(shí)現(xiàn)。

import UIAbility from '@ohos.app.ability.UIAbility';
import contextConstant from '@ohos.app.ability.contextConstant';
import AbilityConstant from '@ohos.app.ability.AbilityConstant';
import Want from '@ohos.app.ability.Want';

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
    // 存儲(chǔ)普通信息前,切換到EL1設(shè)備級(jí)加密
    this.context.area = contextConstant.AreaMode.EL1; // 切換area
    // 存儲(chǔ)普通信息

    // 存儲(chǔ)敏感信息前,切換到EL2用戶級(jí)加密
    this.context.area = contextConstant.AreaMode.EL2; // 切換area
    // 存儲(chǔ)敏感信息

    // 存儲(chǔ)敏感信息前,切換到EL3用戶級(jí)加密
    this.context.area = contextConstant.AreaMode.EL3; // 切換area
    // 存儲(chǔ)敏感信息

    // 存儲(chǔ)敏感信息前,切換到EL4用戶級(jí)加密
    this.context.area = contextConstant.AreaMode.EL4; // 切換area
    // 存儲(chǔ)敏感信息
  }
}
import contextConstant from '@ohos.app.ability.contextConstant';
import common from '@ohos.app.ability.common';
import promptAction from '@ohos.promptAction';

@Entry
@Component
struct Page_Context {
  private context = getContext(this) as common.UIAbilityContext;

  build() {
    Column() {
      //...
      List({ initialIndex: 0 }) {
        //...
        ListItem() {
          Row() {
            //...
          }
          .onClick(() = > {
            // 存儲(chǔ)普通信息前,切換到EL1設(shè)備級(jí)加密
            if (this.context.area === contextConstant.AreaMode.EL2) { // 獲取area
              this.context.area = contextConstant.AreaMode.EL1; // 修改area
              promptAction.showToast({
                message: $r('app.string.SwitchToEL1')
              });
            }
            // 存儲(chǔ)普通信息
          })
        }
        //...
        ListItem() {
          Row() {
            //...
          }
          .onClick(() = > {
            // 存儲(chǔ)敏感信息前,切換到EL2用戶級(jí)加密
            if (this.context.area === contextConstant.AreaMode.EL1) { // 獲取area
              this.context.area = contextConstant.AreaMode.EL2; // 修改area
              promptAction.showToast({
                message: $r('app.string.SwitchToEL2')
              });
            }
            // 存儲(chǔ)敏感信息
          })
        }
        //...
      }
      //...
    }
    //...
  }
}

獲取本應(yīng)用中其他Module的Context

調(diào)用createModuleContext(moduleName:string)方法,獲取本應(yīng)用中其他Module的Context。獲取到其他Module的Context之后,即可獲取到相應(yīng)Module的資源信息。

import promptAction from '@ohos.promptAction';
import common from '@ohos.app.ability.common';

let storageEventCall = new LocalStorage();

@Entry(storageEventCall)
@Component
struct Page_Context {
  private context = getContext(this) as common.UIAbilityContext;

  build() {
    Column() {
      //...
      List({ initialIndex: 0 }) {
        ListItem() {
          Row() {
            //...
          }
          .onClick(() = > {
            let moduleName2: string = 'entry';
            let moduleContext: Context = this.context.createModuleContext(moduleName2);
            if (moduleContext !== null) {
              promptAction.showToast({
                message: ('成功獲取Context')
              });
            }
          })
        }
        //...
      }
      //...
    }
    //...
  }
}

訂閱進(jìn)程內(nèi)UIAbility生命周期變化

在應(yīng)用內(nèi)的DFX統(tǒng)計(jì)場(chǎng)景中,如需要統(tǒng)計(jì)對(duì)應(yīng)頁(yè)面停留時(shí)間和訪問(wèn)頻率等信息,可以使用訂閱進(jìn)程內(nèi)UIAbility生命周期變化功能。

通過(guò)[ApplicationContext]提供的能力,可以訂閱進(jìn)程內(nèi)UIAbility生命周期變化。當(dāng)進(jìn)程內(nèi)的UIAbility生命周期變化時(shí),如創(chuàng)建、可見/不可見、獲焦/失焦、銷毀等,會(huì)觸發(fā)相應(yīng)的回調(diào)函數(shù)。每次注冊(cè)回調(diào)函數(shù)時(shí),都會(huì)返回一個(gè)監(jiān)聽生命周期的ID,此ID會(huì)自增+1。當(dāng)超過(guò)監(jiān)聽上限數(shù)量2^63-1時(shí),會(huì)返回-1。以[UIAbilityContext]中的使用為例進(jìn)行說(shuō)明。
鴻蒙文檔.png

`HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`

import type AbilityConstant from '@ohos.app.ability.AbilityConstant';
import type AbilityLifecycleCallback from '@ohos.app.ability.AbilityLifecycleCallback';
import hilog from '@ohos.hilog';
import UIAbility from '@ohos.app.ability.UIAbility';
import type Want from '@ohos.app.ability.Want';
import type window from '@ohos.window';

const TAG: string = '[LifecycleAbility]';
const DOMAIN_NUMBER: number = 0xFF00;

export default class LifecycleAbility extends UIAbility {
  // 定義生命周期ID
  lifecycleId: number = -1;

  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    // 定義生命周期回調(diào)對(duì)象
    let abilityLifecycleCallback: AbilityLifecycleCallback = {
      // 當(dāng)UIAbility創(chuàng)建時(shí)被調(diào)用
      onAbilityCreate(uiAbility) {
        hilog.info(DOMAIN_NUMBER, TAG, `onAbilityCreate uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`);
      },
      // 當(dāng)窗口創(chuàng)建時(shí)被調(diào)用
      onWindowStageCreate(uiAbility, windowStage: window.WindowStage) {
        hilog.info(DOMAIN_NUMBER, TAG, `onWindowStageCreate uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`);
        hilog.info(DOMAIN_NUMBER, TAG, `onWindowStageCreate windowStage: ${JSON.stringify(windowStage)}`);
      },
      // 當(dāng)窗口處于活動(dòng)狀態(tài)時(shí)被調(diào)用
      onWindowStageActive(uiAbility, windowStage: window.WindowStage) {
        hilog.info(DOMAIN_NUMBER, TAG, `onWindowStageActive uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`);
        hilog.info(DOMAIN_NUMBER, TAG, `onWindowStageActive windowStage: ${JSON.stringify(windowStage)}`);
      },
      // 當(dāng)窗口處于非活動(dòng)狀態(tài)時(shí)被調(diào)用
      onWindowStageInactive(uiAbility, windowStage: window.WindowStage) {
        hilog.info(DOMAIN_NUMBER, TAG, `onWindowStageInactive uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`);
        hilog.info(DOMAIN_NUMBER, TAG, `onWindowStageInactive windowStage: ${JSON.stringify(windowStage)}`);
      },
      // 當(dāng)窗口被銷毀時(shí)被調(diào)用
      onWindowStageDestroy(uiAbility, windowStage: window.WindowStage) {
        hilog.info(DOMAIN_NUMBER, TAG, `onWindowStageDestroy uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`);
        hilog.info(DOMAIN_NUMBER, TAG, `onWindowStageDestroy windowStage: ${JSON.stringify(windowStage)}`);
      },
      // 當(dāng)UIAbility被銷毀時(shí)被調(diào)用
      onAbilityDestroy(uiAbility) {
        hilog.info(DOMAIN_NUMBER, TAG, `onAbilityDestroy uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`);
      },
      // 當(dāng)UIAbility從后臺(tái)轉(zhuǎn)到前臺(tái)時(shí)觸發(fā)回調(diào)
      onAbilityForeground(uiAbility) {
        hilog.info(DOMAIN_NUMBER, TAG, `onAbilityForeground uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`);
      },
      // 當(dāng)UIAbility從前臺(tái)轉(zhuǎn)到后臺(tái)時(shí)觸發(fā)回調(diào)
      onAbilityBackground(uiAbility) {
        hilog.info(DOMAIN_NUMBER, TAG, `onAbilityBackground uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`);
      },
      // 當(dāng)UIAbility遷移時(shí)被調(diào)用
      onAbilityContinue(uiAbility) {
        hilog.info(DOMAIN_NUMBER, TAG, `onAbilityContinue uiAbility.launchWant: ${JSON.stringify(uiAbility.launchWant)}`);
      }
    };
    // 獲取應(yīng)用上下文
    let applicationContext = this.context.getApplicationContext();
    // 注冊(cè)應(yīng)用內(nèi)生命周期回調(diào)
    this.lifecycleId = applicationContext.on('abilityLifecycle', abilityLifecycleCallback);
    hilog.info(DOMAIN_NUMBER, TAG, `register callback number: ${this.lifecycleId}`);
  }

  //...

  onDestroy() : void {
    // 獲取應(yīng)用上下文
    let applicationContext = this.context.getApplicationContext();
    // 取消應(yīng)用內(nèi)生命周期回調(diào)
    applicationContext.off('abilityLifecycle', this.lifecycleId);
  }
};

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 框架
    +關(guān)注

    關(guān)注

    0

    文章

    398

    瀏覽量

    17404
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2302

    瀏覽量

    42689
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙開發(fā)接口Ability框架:【@ohos.application.Ability (Ability)】

    Ability模塊提供對(duì)Ability生命周期、上下文環(huán)境等調(diào)用管理的能力,包括Ability創(chuàng)建、銷毀、轉(zhuǎn)儲(chǔ)客戶端信息等。
    的頭像 發(fā)表于 04-30 17:42 ?2184次閱讀
    <b class='flag-5'>鴻蒙</b>開發(fā)接口<b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【@ohos.application.<b class='flag-5'>Ability</b> (<b class='flag-5'>Ability</b>)】

    鴻蒙開發(fā)接口Ability框架:【 (Context模塊)】

    Context模塊提供了ability或application的上下文的能力,包括允許訪問(wèn)特定于應(yīng)用程序的資源、請(qǐng)求和驗(yàn)證權(quán)限等。
    的頭像 發(fā)表于 05-13 16:04 ?654次閱讀
    <b class='flag-5'>鴻蒙</b>開發(fā)接口<b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【 (<b class='flag-5'>Context</b>模塊)】

    鴻蒙開發(fā)接口Ability框架:【(AbilityContext)】

    AbilityContext是Ability上下文環(huán)境,繼承自Context。
    的頭像 發(fā)表于 05-13 09:26 ?937次閱讀
    <b class='flag-5'>鴻蒙</b>開發(fā)接口<b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【(AbilityContext)】

    鴻蒙開發(fā)接口Ability框架:【Context

    Context模塊提供開發(fā)者運(yùn)行代碼的上下文環(huán)境的能力,包括查詢和設(shè)置應(yīng)用信息、ResourceManager等信息。
    的頭像 發(fā)表于 05-21 17:33 ?776次閱讀
    <b class='flag-5'>鴻蒙</b>開發(fā)接口<b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【<b class='flag-5'>Context</b>】

    關(guān)于進(jìn)程上下文、中斷上下文及原子上下文的一些概念理解

    不同運(yùn)行狀態(tài),才有了上下文的概念。用戶空間的應(yīng)用程序,如果想請(qǐng)求系統(tǒng)服務(wù),比如操作某個(gè)物理設(shè)備,映射設(shè)備的地址到用戶空間,必須通過(guò)系統(tǒng)調(diào)用來(lái)實(shí)現(xiàn)。(系統(tǒng)調(diào)用是操作系統(tǒng)提供給用戶空間的接口函數(shù))。 通過(guò)系統(tǒng)
    發(fā)表于 09-06 09:58

    進(jìn)程上下文與中斷上下文的理解

    的切換1.進(jìn)程上下文主要是異常處理程序和內(nèi)核線程。內(nèi)核之所以進(jìn)入進(jìn)程上下文是因?yàn)檫M(jìn)程自身的一些工作需要在內(nèi)核中做。例如,系統(tǒng)調(diào)用是為當(dāng)前進(jìn)程服務(wù)的,異常通常是處理進(jìn)程導(dǎo)致的錯(cuò)誤狀態(tài)等。
    發(fā)表于 12-11 19:45

    進(jìn)程上下文/中斷上下文及原子上下文的概念

    為什么會(huì)有上下文這種概念進(jìn)程上下文/中斷上下文及原子上下文的概念
    發(fā)表于 01-13 07:17

    HarmonyOS/OpenHarmony(Stage模型)卡片開發(fā)應(yīng)用上下文Context概述

    概述 Context是應(yīng)用中對(duì)象的上下文,其提供了應(yīng)用的一些基礎(chǔ)信息,例如resourceManager(資源管理)、applicationInfo(當(dāng)前應(yīng)用信息)、dir(應(yīng)用開發(fā)路徑)、area
    發(fā)表于 08-24 16:30

    基于Pocket PC的上下文菜單實(shí)現(xiàn)

    介紹了基于 Pocket PC 中的點(diǎn)按操作概念, 論述了在Pocket PC 中上下文菜單的實(shí)現(xiàn)原理及方法, 并給出了基于MFC 下的Windows CE 應(yīng)用程序實(shí)現(xiàn)上下文菜單的步驟和代碼實(shí)例。
    發(fā)表于 07-25 18:26 ?17次下載

    基于上下文相似度的分解推薦算法

    針對(duì)移動(dòng)服務(wù)推薦中用戶上下文環(huán)境復(fù)雜多變和數(shù)據(jù)稀疏性問(wèn)題,提出一種基于移動(dòng)用戶上下文相似度的張量分解推薦算法-UCS-TF。該算法組合用戶間的多維上下文相似度和
    發(fā)表于 11-27 17:42 ?0次下載

    Web服務(wù)上下文的訪問(wèn)控制策略模型

    Web服務(wù)環(huán)境中,交互實(shí)體通常位于不同安全域,具有不可預(yù)見性。Web服務(wù)應(yīng)該基于其他與領(lǐng)域無(wú)關(guān)的信息而非身份來(lái)實(shí)施訪問(wèn)控制,以實(shí)現(xiàn)對(duì)跨域未知用戶的訪問(wèn)授權(quán)。為此,提出了適應(yīng)于Web服務(wù)的基于
    發(fā)表于 01-05 16:32 ?0次下載

    鴻蒙開發(fā)接口Ability框架:【AbilityStageContext】

    AbilityStageContext是AbilityStage的上下文環(huán)境,繼承自[Context]。
    的頭像 發(fā)表于 05-15 15:51 ?499次閱讀
    <b class='flag-5'>鴻蒙</b>開發(fā)接口<b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【AbilityStageContext】

    鴻蒙開發(fā)接口Ability框架:【Context

    Context模塊提供開發(fā)者運(yùn)行代碼的上下文環(huán)境的能力,包括查詢和設(shè)置應(yīng)用信息、ResourceManager等信息。
    的頭像 發(fā)表于 05-15 15:29 ?522次閱讀
    <b class='flag-5'>鴻蒙</b>開發(fā)接口<b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【<b class='flag-5'>Context</b>】

    鴻蒙開發(fā)接口Ability框架:【ExtensionContext】

    ExtensionContext是Extension的上下文環(huán)境,繼承自Context
    的頭像 發(fā)表于 05-15 17:34 ?285次閱讀
    <b class='flag-5'>鴻蒙</b>開發(fā)接口<b class='flag-5'>Ability</b><b class='flag-5'>框架</b>:【ExtensionContext】

    鴻蒙Ability Kit程序框架服務(wù))【UIAbility組件基本用法】

    UIAbility組件的基本用法包括:指定UIAbility的啟動(dòng)頁(yè)面以及獲取UIAbility的上下文[UIAbilityContext]。
    的頭像 發(fā)表于 06-06 11:02 ?403次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務(wù)</b>)【UIAbility組件基本用法】