当前位置: 首页 > news >正文

鸿蒙启动框架配置文件(StartUpTask)

{"startupTasks": [//有哪些任务{"name": "StartupTask_001",//任务名字"srcEntry": "./ets/startup/StartupTask_001.ets",//任务的文件路径"runOnThread": "taskpool",//运行在哪个现成,有两个选择,任务池或者主线程"waitOnMainThread": false //要不要主线程等待该任务,一般是false},{"name": "StartupTask_002","srcEntry": "./ets/startup/StartupTask_002.ets","dependencies": [//是否依赖其它的任务"StartupTask_001"],"runOnThread": "taskpool","waitOnMainThread": false},{"name": "StartupTask_003","srcEntry": "./ets/startup/StartupTask_003.ets","dependencies": ["StartupTask_001"],"runOnThread": "taskpool","waitOnMainThread": false},{"name": "StartupTask_004","srcEntry": "./ets/startup/StartupTask_004.ets","dependencies": ["StartupTask_002"],"runOnThread": "taskpool","waitOnMainThread": false},{"name": "StartupTask_005","srcEntry": "./ets/startup/StartupTask_005.ets","dependencies": ["StartupTask_003","StartupTask_004"],"runOnThread": "taskpool","waitOnMainThread": false},{"name": "StartupTask_006","srcEntry": "./ets/startup/StartupTask_006.ets","runOnThread": "mainThread","waitOnMainThread": false,"excludeFromAutoStart": true},{"name": "StartupTask_007","srcEntry": "./ets/startup/StartupTask_007.ets","dependencies": ["StartupTask_006"],"runOnThread": "mainThread","waitOnMainThread": false,"excludeFromAutoStart": true  //false表示系统加载的时候,自动执行任务,true表示可以在代码中任何地方执行}],"configEntry": "./ets/startup/MyStartupConfigEntry.ets"
}举例:在Ability中执行任务6 和 7
export default class EntryAbility extends UIAbility {onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');let startParams = ['StartupTask_006', 'StartupTask_007'];try {startupManager.run(startParams).then(() => {console.log('StartupTest startupManager run then, startParams = ');}).catch((error: BusinessError) => {console.info("StartupTest promise catch error, error = " + JSON.stringify(error));console.info("StartupTest promise catch error, startParams = "+ JSON.stringify(startParams));})} catch (error) {let errMsg = JSON.stringify(error);let errCode: number = error.code;console.log('Startup catch error , errCode= ' + errCode);console.log('Startup catch error ,error= ' + errMsg);}}

上面代码是startup_config的讲解,下面是如何操作
在这里插入图片描述
在如上位置增加startup_config.json,内容如下

{"startupTasks": [{"name": "StartupTask_001","srcEntry": "./ets/startup/InitMMKV.ets","runOnThread": "taskPool","waitOnMainThread": false},{"name": "StartupTask_002","srcEntry": "./ets/startup/initZRouter.ets","dependencies": ["StartupTask_001"],"runOnThread": "taskPool","waitOnMainThread": false},{"name": "StartupTask_003","srcEntry": "./ets/startup/StartupTask_003.ets","dependencies": ["StartupTask_001"],"runOnThread": "taskPool","waitOnMainThread": false},{"name": "StartupTask_004","srcEntry": "./ets/startup/StartupTask_004.ets","dependencies": ["StartupTask_002"],"runOnThread": "taskPool","waitOnMainThread": false},{"name": "StartupTask_005","srcEntry": "./ets/startup/StartupTask_005.ets","dependencies": ["StartupTask_003","StartupTask_004"],"runOnThread": "taskPool","waitOnMainThread": false},{"name": "StartupTask_006","srcEntry": "./ets/startup/StartupTask_006.ets","runOnThread": "mainThread","waitOnMainThread": false,"excludeFromAutoStart": true},{"name": "StartupTask_007","srcEntry": "./ets/startup/StartupTask_007.ets","dependencies": ["StartupTask_006"],"runOnThread": "mainThread","waitOnMainThread": false,"excludeFromAutoStart": true}],"configEntry": "./ets/startup/StartUpConfigEntry.ets"
}

StartUpConfigEntry.ets文件是配置监听,监听任务的执行,代码如下

//配置监听,监听任务的执行
import { StartupConfig, StartupConfigEntry, StartupListener } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { BusinessError } from '@kit.BasicServicesKit';export default class StartUpConfigEntry extends StartupConfigEntry {onConfig() {hilog.info(0x0000, 'testTag', `onConfig`);//任务执行完成的回调,监听所有的组let onCompletedCallback = (error: BusinessError<void>) => {hilog.info(0x0000, 'testTag', `onCompletedCallback`);if (error) {hilog.info(0x0000, 'testTag', 'onCompletedCallback: %{public}d, message: %{public}s', error.code, error.message);} else {hilog.info(0x0000, 'testTag', `onCompletedCallback: success.`);}};let startupListener: StartupListener = {'onCompleted': onCompletedCallback};let config: StartupConfig = {'timeoutMs': 10000,//10秒钟之内执行失败,进入error回调方法'startupListener': startupListener};return config;}
}

startup文件夹下的其余的文件就是我们配置的启动任务,我们选择其中的两个,

import { StartupTask, common } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';/*** 启动任务。需要继承StartupTask*/
@Sendable
export default class StartupTask_001 extends StartupTask {constructor() {super();}async init(context: common.AbilityStageContext) {console.info('testTagStartUP: ', '任务一:实例化MMKV');return 'initMMKV';//在下一个任务的onDependencyCompleted回调方法会传入StartupTask_001}onDependencyCompleted(dependence: string, result: Object): void {hilog.info(0x0000, 'testTagStartUP', 'StartupTask_001 onDependencyCompleted, dependence: %{public}s, result: %{public}s',dependence, JSON.stringify(result));}
}

在init方法里初始化第三方SDK

import { StartupTask, common } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';@Sendable
export default class StartupTask_007 extends StartupTask {constructor() {super();}async init(context: common.AbilityStageContext) {hilog.info(0x0000, 'testTagStartUP', 'StartupTask_007 init.');return 'StartupTask_007';}onDependencyCompleted(dependence: string, result: Object): void {hilog.info(0x0000, 'testTagStartUP', 'StartupTask_007 onDependencyCompleted, dependence: %{public}s, result: %{public}s',dependence, JSON.stringify(result));}
}

在module.json5中配置(见下图)
在这里插入图片描述
OK大功告成。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 学习记录:js算法(二十一):字符串的排列、替换后的最长重复字符
  • YOLOv9改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
  • 前端内存泄露案例与解决方案
  • Ubuntu 安装个人热点
  • 字符集介绍
  • 八、2 DMA数据转运 DMA函数介绍
  • 使用 streamlink 把 m3u8 转为 mp4
  • 如何使用IDEA搭建Mybatis框架环境(详细教程)
  • 什么是USB?
  • 前端配置环境
  • RabbitMQ 入门:基本概念、特性及简单示例
  • 开学季老师如何发布分班?
  • 奇偶校验、crc循环冗余检验
  • pg 唯一性约束修复
  • Go语言的编程规则和秘籍
  • .pyc 想到的一些问题
  • Brief introduction of how to 'Call, Apply and Bind'
  • ECS应用管理最佳实践
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Fundebug计费标准解释:事件数是如何定义的?
  • Less 日常用法
  • Linux链接文件
  • mockjs让前端开发独立于后端
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 技术胖1-4季视频复习— (看视频笔记)
  • 两列自适应布局方案整理
  • 如何胜任知名企业的商业数据分析师?
  • 微服务核心架构梳理
  • 7行Python代码的人脸识别
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ###C语言程序设计-----C语言学习(3)#
  • #NOIP 2014# day.1 T2 联合权值
  • (6)STL算法之转换
  • (C语言)球球大作战
  • (TOJ2804)Even? Odd?
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (二)windows配置JDK环境
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (十八)SpringBoot之发送QQ邮件
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (杂交版)植物大战僵尸
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .Net IOC框架入门之一 Unity
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .net Stream篇(六)
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .Net Web项目创建比较不错的参考文章
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET 材料检测系统崩溃分析
  • .Net 垃圾回收机制原理(二)
  • .NET 中让 Task 支持带超时的异步等待