Worker 進行多線程任務開發

概念介紹

  • 在 OpenHarmony 中,UI 線程負責處理 UI 事件和用戶交互,而 Worker 線程用於處理耗時操作,以提高應用程序的響應速度和用戶體驗。
  • Worker 線程是與主線程並行的獨立線程,通常用於執行後臺任務。需要注意的是,Worker 線程中不能直接修改 UI 元素,UI 更新必須在 UI 線程中進行。
 

API 接口

  • 文章介紹了@ohos.worker模塊,該模塊提供了創建 Worker 線程的構造函數接口,併爲 UI 線程和 Worker 線程提供了線程間通信的接口。
  • 詳細 API 能力信息可以參考官方文檔。
 

宿主線程與 Worker 線程的通信

  • 宿主線程通過postMessage接口向 Worker 線程發送消息,並通過onmessage事件監聽接口處理從 Worker 線程接收到的消息。
  • Worker 線程通過postMessage接口向宿主線程發送消息,並通過onmessage事件監聽接口處理從宿主線程接收到的消息。
 

線程的關閉和銷燬

  • Worker 線程的生命週期通常跟隨應用,應用退出時釋放 Worker 資源。
  • 可以通過worker.terminate()在宿主線程中主動銷燬 Worker 線程,或者通過workerPort.close()在 Worker 線程中主動銷燬。

開發步驟

  • 使用 DevEco Studio 創建 Worker 文件,並在build-profile.json5中添加配置。
  • 在宿主線程中創建 Worker 實例,並通過sendMessage發送消息,通過onmessage監聽接收消息。
  • 在 Worker 線程中,通過ThreadWorkerGlobalScope實例的postMessageonmessage接口與宿主線程通信。
build-profile.json5
主線程接收和發送消息:
worker 線程中通過 onmessage 接收主線程發過來的消息。
通過 postMessage 向主線程發送消息。

注意事項

  • Worker 線程不可以直接操作 UI,需要通過其他方式(如 AppStorage)進行傳值。
  • 及時銷燬不再使用的 Worker 線程,避免資源浪費。
 

參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章