# task_pool_query **Repository Path**: llslsb/task_pool_query ## Basic Information - **Project Name**: task_pool_query - **Description**: TaskPool文件查询 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-23 - **Last Updated**: 2025-08-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TaskPool文件查询 ### 场景介绍 TaskPool文件查询是实用工具类应用高频使用场景之一,如用户需要批量查询文件。 本示例基于[@ohos.taskpool](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-taskpool)为应用程序提供多线程运行环境,降低资源消耗并提升系统性能,防止页面加载卡顿。 ### 效果预览 ### 使用说明 1. 首页目录先点击创建文件,会在应用沙箱目录下生成10000个文件。 2. 首页目录点击查询文件,进入文件展示页面,这时候会启动taskpool去查询相应目录下文件。分批返回到主线程,主线程进行加载渲染。 ### 实现思路 1. 在[taskpool](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-taskpool)子线程中查询文件,将子线程查询结果分批发送至主线程,主线程分批渲染。 ``` if (i !== 0 && (i % BATCH_SNED_NUM === 0)) { taskpool.Task.sendData(fileList, QueryMsg.SEND_DATA); fileList = []; } ``` 2. 主线程实现接收子线程消息的方法,根据消息内容,进行相应的接收、异常处理。 ``` switch (msg) { case QueryMsg.START: this.data.dataArray = []; break; case QueryMsg.SEND_DATA: // ... this.data.dataArray.push(...fileList) this.data.notifyDataReload() break; case QueryMsg.ERROR: // ... this.data.dataArray = []; this.data.notifyDataReload() break; case QueryMsg.END: // ... this.data.dataArray.push(...fileList); this.data.notifyDataReload() break; } ``` 3. 取消查询场景:退出页面主动取消查询任务等场景。 ``` aboutToDisappear(): void { // 退出页面,取消查询任务 TaskExecutor.getInstance().cancelTask(this.queryTask); } // ... if (taskpool.Task.isCanceled()) { // 查询文件过程中,判断任务是否被取消,主动退出 taskpool.Task.sendData([], QueryMsg.ERROR); return; } ``` ### 约束与限制 * 本示例支持API Version 17 Release及以上版本。 * 本示例支持HarmonyOS 5.0.5 Release SDK及以上版本。 * 本示例需要使用DevEco Studio 5.0.5 Release及以上版本进行编译运行。 ### 工程结构&模块类型 ``` ├──entry/src/main/ets │ ├──consts │ │ └──Consts.ets │ ├──entryability │ │ └──EntryAbility.ets │ ├──entrybackupability │ │ └──EntryBackupAbility.ets │ ├──model │ │ ├──FileDataSource.ets │ │ └──FileModel.ets │ ├──pages │ │ ├──CustomDialog.ets │ │ ├──Index.ets │ │ └──QueryFilePage.ets │ ├──taskpool │ │ ├──base │ │ │ ├──BaseTask.ets // task父类 │ │ │ └──TaskExecutor.ets │ │ ├──CreateFileTask.ets // 创建文件task │ │ └──QueryFileTask.ets // 文件查询task │ └──utils │ ├──FileUtil.ets │ └──Logger.ets └──entry/src/main/resources // 应用资源目录 ``` ### 参考文档 [@ohos.taskpool(启动任务池)](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-taskpool)