介绍
本示例介绍在Worker 子线程使用@ohos.zlib 提供的zlib.decompressfile接口对沙箱目录中的压缩文件进行解压操作,解压成功后将解压路径返回主线程,获取解压文件列表。
效果图预览
使用说明
- 点击解压按钮,解压test.zip文件,显示解压结果。
实现思路
- 在/src/main/ets/workers目录下创建Worker.ets线程文件,绑定Worker对象。
const workerPort: ThreadWorkerGlobalScope = worker.workerPort;
- 在build-profile.json5中进行配置Worker线程文件路径,Worker线程文件才能确保被打包到应用中。
"buildOption": {
"sourceOption": {
"workers": [
"./src/main/ets/workers/Worker.ets"
]
}
}
- 在主线程创建一个Worker线程,通过new worker.ThreadWorker()创建Worker实例,传入Worker.ets的加载路径。
let workerInstance: worker.ThreadWorker = new worker.ThreadWorker('@decompressFile/ets/workers/Worker.ets');
- 主线程使用postMessage()向worker线程发送应用沙箱路径和压缩文件名称。
workerInstance.postMessage({ pathDir: this.pathDir, rawfileZipName: rawfileZipName });
- 在Worker.ets文件中通过调用onmessage()方法接收主线程发送的应用沙箱路径和压缩文件名称。