色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙開發:任務(Mission)管理場景介紹

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-06-13 14:37 ? 次閱讀

任務(Mission)管理場景介紹

任務(Mission)管理相關的基本概念如下:

  • AbilityRecord:系統服務側管理一個UIAbility實例的最小單元,對應一個應用側的UIAbility組件實例。系統服務側管理UIAbility實例數量上限為512個。
  • MissionRecord:任務管理的最小單元。一個MissionRecord中僅有一個AbilityRecord,即一個UIAbility組件實例對應一個單獨的任務。
  • MissionList:一個從桌面開始啟動的任務列表,記錄了任務之間的啟動關系,下一個任務由上一個任務啟動,最底部的任務由桌面啟動,這里稱之為任務鏈。
  • MissionListManager:系統任務管理模塊,內部維護了當前所有的任務鏈,與最近任務列表保持一致。
    圖1 任務管理示意圖
    mission-list-manager

任務的管理由系統應用(如桌面應用)負責,三方應用無法管理任務。用戶通過最近任務列表進行任務的相關交互。當創建任務后,用戶可以對最近任務列表進行如下操作:

  • 刪除一個指定的任務。
  • 加鎖或解鎖一個指定的任務(加鎖后的任務在清理所有任務時不會被清理)。
  • 清理最近任務列表中的所有任務。
  • 將一個指定的任務切換到前臺。

一個UIAbility實例對應一個單獨的任務,因此應用調用[startAbility()]方法啟動一個UIAbility時,就是創建了一個任務。

  1. 桌面應用調用[missionManager]的接口管理任務,需要申請ohos.permission.MANAGE_MISSIONS權限,配置方式請參見[申請應用權限]。

  2. 利用missionManager進行任務管理(監聽任務變化、獲取任務信息、獲取任務快照、清理任務、任務加鎖/解鎖等)。

    import missionManager from '@ohos.app.ability.missionManager';
    import { BusinessError } from '@ohos.base';
    import image from '@ohos.multimedia.image';
    import promptAction from '@ohos.promptAction';
    import hilog from '@ohos.hilog';
    
    const TAG: string = 'TaskManager';
    const DOMAIN_NUMBER: number = 0xFF00;
    
    private listenerId: number = 0;
    private missionId: number = 0;
    private listener: missionManager.MissionListener = {
      // 任務創建
      onMissionCreated: (mission: number) = > {
        hilog.info(DOMAIN_NUMBER, TAG, '--------onMissionCreated-------');
      },
      // 任務銷毀
      onMissionDestroyed: (mission: number) = > {
        hilog.info(DOMAIN_NUMBER, TAG, '--------onMissionDestroyed-------');
      },
      // 任務快照變化
      onMissionSnapshotChanged: (mission: number) = > {
        hilog.info(DOMAIN_NUMBER, TAG, '--------onMissionMovedToFront-------');
      },
      // 任務被移動到前臺
      onMissionMovedToFront: (mission: number) = > {
        hilog.info(DOMAIN_NUMBER, TAG, '--------onMissionClosed-------');
      },
      // 任務圖標變化
      onMissionIconUpdated: (mission: number, icon: image.PixelMap) = > {
        hilog.info(DOMAIN_NUMBER, TAG, '--------onMissionIconUpdated-------');
      },
      // 任務名稱變化
      onMissionLabelUpdated: (mission: number) = > {
        hilog.info(DOMAIN_NUMBER, TAG, '--------onMissionLabelUpdated-------');
      },
      // 任務實例被關閉
      onMissionClosed: (mission: number) = > {
        hilog.info(DOMAIN_NUMBER, TAG, '--------onMissionClosed-------');
      }
    };
    
    // 1.注冊任務變化通知
    this.listenerId = missionManager.on('mission', this.listener);
    promptAction.showToast({
      message: $r('app.string.register_success_toast')
    });
    hilog.info(DOMAIN_NUMBER, TAG, `missionManager.on success, listenerId = ${this.listenerId}`);
    
    // 2.獲取系統最近20個任務
    missionManager.getMissionInfos('', 20, (error: BusinessError, missions: Array< missionManager.MissionInfo >) = > {
      hilog.info(DOMAIN_NUMBER, TAG, 'getMissionInfos is called, error = ' + JSON.stringify(error));
      hilog.info(DOMAIN_NUMBER, TAG, 'size = ' + missions.length);
      hilog.info(DOMAIN_NUMBER, TAG, 'missions = ' + JSON.stringify(missions));
    
      // 判斷系統最近任務中是否包含etsclock
      for (let i = 0;i < missions.length; i++) {
        if (missions[i].want.bundleName === 'ohos.samples.etsclock') {
          promptAction.showToast({
            message: $r('app.string.obtain_success_toast')
          });
          hilog.info(DOMAIN_NUMBER, TAG, `getMissionInfos.find etsclock, missionId  = ${missions[i].missionId}`);
          this.missionId = missions[i].missionId;
          return;
        }
      }
      promptAction.showToast({
        message: $r('app.string.obtain_failed_toast')
      });
    });
    
    // 3.獲取單個任務的詳細信息()
    missionManager.getMissionInfo('', this.missionId).then((data: missionManager.MissionInfo) = > {
      promptAction.showToast({
        message: JSON.stringify(data.want.bundleName)
      });
      hilog.info(DOMAIN_NUMBER, TAG, `getMissionInfo successfully. Data: ${JSON.stringify(data)}`);
    }).catch((error: BusinessError) = > {
      hilog.info(DOMAIN_NUMBER, TAG, `getMissionInfo failed. Cause: ${error.message}`);
    });
    
    // 4.獲取任務快照
    missionManager.getMissionSnapShot('', this.missionId, (error: BusinessError, snapshot: missionManager.MissionSnapshot) = > {
      if (error === null) {
        promptAction.showToast({
          message: $r('app.string.obtain_snapshot_success_toast')
        });
      }
      hilog.info(DOMAIN_NUMBER, TAG, 'getMissionSnapShot is called, error = ' + JSON.stringify(error));
      hilog.info(DOMAIN_NUMBER, TAG, 'bundleName = ' + snapshot.ability.bundleName);
    })
    
    // 5.獲取低分辨任務快照
    missionManager.getLowResolutionMissionSnapShot('', this.missionId, (error: BusinessError, snapshot: missionManager.MissionSnapshot) = > {
      if (error === null) {
        promptAction.showToast({
          message: $r('app.string.obtain_low_snapshot_success_toast')
        });
      }
      hilog.info(DOMAIN_NUMBER, TAG, 'getLowResolutionMissionSnapShot is called, error = ' + JSON.stringify(error));
      hilog.info(DOMAIN_NUMBER, TAG, 'bundleName = ' + snapshot.ability.bundleName);
    })
    
    // 6-1 加鎖任務
    missionManager.lockMission(this.missionId).then(() = > {
      promptAction.showToast({
        message: $r('app.string.lock_success_toast')
      });
      hilog.info(DOMAIN_NUMBER, TAG, 'lockMission is called ');
    });
    
    // 6-2 解鎖任務
    missionManager.unlockMission(this.missionId).then(() = > {
      promptAction.showToast({
        message: $r('app.string.unlock_success_toast')
      });
      hilog.info(DOMAIN_NUMBER, TAG, 'unlockMission is called ');
    });
    
    // 7.把任務切到前臺
    missionManager.moveMissionToFront(this.missionId).then(() = > {
      hilog.info(DOMAIN_NUMBER, TAG, 'moveMissionToFront is called ');
    });
    
    // 8.刪除單個任務
    missionManager.clearMission(this.missionId).then(() = > {
      promptAction.showToast({
        message: $r('app.string.delete_success_toast')
      });
      hilog.info(DOMAIN_NUMBER, TAG, 'clearMission is called ');
    });
    
    // 9.刪除全部任務
    missionManager.clearAllMissions().catch((err: BusinessError) = > {
      hilog.info(DOMAIN_NUMBER, TAG, `${err.code}`);
    });
    
    // 10.解注冊任務變化通知
    missionManager.off('mission', this.listenerId, (error: BusinessError) = > {
      if (error === null) {
        promptAction.showToast({
          message: $r('app.string.unregister_success_toast')
        });
      }
      hilog.info(DOMAIN_NUMBER, TAG, 'unregisterMissionListener');
    })
    

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 鴻蒙
    +關注

    關注

    57

    文章

    2362

    瀏覽量

    42883
收藏 人收藏

    評論

    相關推薦

    華為鴻蒙—時代的開啟者!

    `在開始之前先給大家介紹下華為鴻蒙吧,鴻蒙微內核是基于微內核的全場景分布式OS,可按需擴展,實現更廣泛的系統安全,主要用于物聯網,特點是低時延,甚至可到毫秒級乃至亞毫秒級。
    發表于 09-03 11:19

    為滿足全場景智慧體驗 鴻蒙系統一四大技術特性!

    鴻蒙OS的設計初衷是為滿足全場景智慧體驗的高標準的連接要求,為此華為提出了4大特性的系統解決方案。1. 分布式架構首次用于終端OS,實現跨終端無縫協同體驗鴻蒙OS的“分布式OS架構”和“分布式軟總線
    發表于 09-03 21:09

    華為鴻蒙一時代的開啟者!

    `在開始之前先給大家介紹下華為鴻蒙吧,鴻蒙微內核是基于微內核的全場景分布式OS,可按需擴展,實現更廣泛的系統安全,主要用于物聯網,特點是低時延,甚至可到毫秒級乃至亞毫秒級。
    發表于 09-04 09:41

    鴻蒙OS適用的全場景到底什么意思?

    上,未來會有越來越多的智能設備使用開源的鴻蒙OS。華為消費者業務CEO余承東在介紹鴻蒙OS開發初衷時表示:“隨著全場景智慧時代的到來,華為認
    發表于 09-25 09:25

    鴻蒙介紹

    這份資料主要是對鴻蒙概念的掃盲,這里介紹鴻蒙的應用場景和技術框架,同時也有1000+頁,非常詳細的入門手冊。這份資料具體的內容有:HarmonyOS快速入門手冊2.0通用設計基礎Ha
    發表于 11-24 10:49

    [文章] HarmonyOS學習之一:鴻蒙HarmonyOS系統介紹

    華為的鴻蒙系統優點是流暢度和大一統。這套系統主要是基于微內核的全場景分布式OS,可以按照需要進行擴展,由此來實現更為廣泛的系統的安全,它主要用于物聯網,它的主要特點是很低的時延。HarmonyOS
    發表于 11-26 15:26

    [文章] HarmonyOS學習之一:鴻蒙HarmonyOS系統介紹

    華為的鴻蒙系統優點是流暢度和大一統。這套系統主要是基于微內核的全場景分布式OS,可以按照需要進行擴展,由此來實現更為廣泛的系統的安全,它主要用于物聯網,它的主要特點是很低的時延。HarmonyOS
    發表于 12-02 16:57

    【有獎討論】鴻蒙操作系統及華為全場景新品發布會

    新品發布會這場直播會為大家揭示什么呢?首批搭載鴻蒙手機上線?鴻蒙場景新品類發布!平板?智慧屏?全屋智能?智能座艙、車機?各位開發者沒有不愛電子產品的吧?大家希望這次的華為全
    發表于 05-28 19:07

    鴻蒙應用開發入門資料合集

    開發難度!贊!2、鴻蒙應用開發入門資料二:開發環境搭建下載HarmonyOS SDK DevEco Studio提供SDK Manager統一管理
    發表于 03-22 11:23

    鴻蒙開源全場景應用開發資料匯總

    1、鴻蒙開源全場景應用開發——視頻編解碼面對鴻蒙這一全新的生態,廣大消費者在積極嘗鮮的同時,家中不可避免會出現安卓設備和鴻蒙設備并存的現象,
    發表于 03-23 10:09

    【學習打卡】----鴻蒙系統開發過程中的心得體會

    的設計模式,帶來的就是一種顛覆式的用戶體驗。而其底層基礎就在于特有的分布式任務調度、分布式數據管理等能力,有興趣的朋友可以關注一下。3、鴻蒙方便產品生態的建設一次開發多端部署,體現了
    發表于 07-03 18:07

    潤和軟件鴻蒙場景開發與教學創新解決方案賦能高校ICT人才培養

    、智慧出行、運動健康五大場景下的創新體驗,基于新的HarmonyOS開發技術給開發者構筑更加高效便捷的開發平臺,并呈現了豐富的開發者活動。攜
    發表于 11-09 10:22

    鴻蒙 OS 應用開發初體驗

    什么是 HarmonyOS? HarmonyOS(鴻蒙操作系統)是華為公司開發的一款基于微內核的分布式操作系統。它是一個面向物聯網(IoT)時代的全場景操作系統,旨在為各種類型的設備提供統一
    發表于 11-02 19:38

    鴻蒙OS 分布式任務調度

    鴻蒙OS 分布式任務調度概述 在 HarmonyO S中,分布式任務調度平臺對搭載 HarmonyOS 的多設備構筑的“超級虛擬終端”提供統一的組件管理能力,為應用定義統一的能力基線、
    的頭像 發表于 01-29 16:50 ?506次閱讀

    鴻蒙開發任務Mission)與啟動模式

    如前文所述,一個UIAbility實例對應一個任務。UIAbility實例個數與UIAbility配置的啟動模式有關。在FA模型下,通過config.json配置文件中的“launchType”屬性
    的頭像 發表于 06-14 11:31 ?500次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>:<b class='flag-5'>任務</b>(<b class='flag-5'>Mission</b>)與啟動模式
    主站蜘蛛池模板: 亚洲日本欧美产综合在线| 精品一成人岛国片在线观看| 777午夜精品久久AV蜜臀| 5G在线观看免费年龄确认| 99久久人妻无码精品系列性欧美| 99久久国产露脸精品竹菊传煤| 98色精品视频在线| 操他射他影院| 国产精品婷婷久青青原| 黄A无码片内射无码视频| 久久全国免费观看视频| 欧美gay老头互吃| 色多多污污在线观看网站| 伦理79电影网在线观看| 免费三级播放器| 毛片大片免费看| 妻子的妹妹在线| 免费精品一区二区三区在线观看| 欧洲video60| 小玲被公扒开腿| 稚嫩挤奶h调教h| 真人做受120分钟免费看| 99re热精品视频国产免费| 国产99精品在线观看| 激情丛林电影完整在线| 男女肉大捧进出全过程免费| 三级黄色在线视频中文| 亚洲一区在线播放| adc免费观看| 国产曰韩无码亚洲视频| 女教师苍井空体肉女教师S242| 偷窥国产亚洲免费视频| 在线免费中文字幕| 风车动漫(p)_在线观看官网| 精品久久久爽爽久久久AV| 欧洲电影巜肉欲丛林| 亚洲三级在线看| 成人AV精品视频| 久久不射网| 妹妹我要色| 午夜片无码区在线观看|