成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

HarmonyOS《鴻蒙操作系統開發入門經典》|線程管理|剪貼板

開發 OpenHarmony
本文包含筆者對徐文禮老師的《鴻蒙操作系統開發入門經典》的學習過程中的筆記總結、拓展思考、案例反饋、閱讀體驗。

[[413804]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

本文引言

時間:2021年7月24日08:28:18

本文包含筆者對徐文禮老師的《鴻蒙操作系統開發入門經典》的學習過程中的筆記總結、拓展思考、案例反饋、閱讀體驗。

為尊重老師的知識產權和精簡本文,本文不會粘貼代碼、倒置案例、機械打字。

3.7 線程管理

3.7.1線程管理

時間:2021年7月24日08:50:383

注:這一部分書上跟開發文檔基本上就是一樣的

(from開發文檔)

1.概述

  • 不同應用在各自獨立的進程中運行。當應用以任何形式啟動時,系統為其創建進程,該進程將持續運行。當進程完成當前任務處于等待狀態,且系統資源不足時,系統自動回收。
  • 在啟動應用時,系統會為該應用創建一個稱為“主線程”的執行線程。該線程隨著應用創建或消失,是應用的核心線程。UI界面的顯示和更新等操作,都是在主線程上進行。主線程又稱UI線程,默認情況下,所有的操作都是在主線程上執行。
  • 如果需要執行比較耗時的任務(如下載文件、查詢數據庫),可創建其他線程來處理。

2.場景介紹

  • 如果應用的業務邏輯比較復雜,可能需要創建多個線程來執行多個任務。這種情況下,代碼復雜難以維護,任務與線程的交互也會更加繁雜。要解決此問題,開發者可以使用==“TaskDispatcher”==來分發不同的任務。

3.接口說明

  • TaskDispatcher是一個任務分發器,它是Ability分發任務的基本接口,隱藏任務所在線程的實現細節。
  • 為保證應用有更好的響應性,我們需要設計任務的優先級。在UI線程上運行的任務默認以高優先級運行。

  • TaskDispatcher具有多種實現,每種實現對應不同的任務分發器。在分發任務時可以指定任務的優先級,由同一個任務分發器分發出的任務具有相同的優先級。系統提供的任務分發器有GlobalTaskDispatcher、ParallelTaskDispatcher、SerialTaskDispatcher 、SpecTaskDispatcher。

為了更好地體現四個任務分發器的對比關系,筆者制表如下:

注:UITaskDispatcher、MainTaskDispatcher都屬于專有任務分發器SpecTastDispatcher。建議使用UITaskDispatcher。

  1. //GlobalTaskDispatcher全局并發任務分發器 
  2. TaskDispatcher globalTaskDispatcher = getGlobalTaskDispatcher(TaskPriority.DEFAULT); 
  3. //ParallelTaskDispatcher并發任務分發器 
  4. String dispatcherName = "parallelTaskDispatcher"
  5. TaskDispatcher parallelTaskDispatcher = createParallelTaskDispatcher(dispatcherName, TaskPriority.DEFAULT); 
  6. //SerialTaskDispatcher串行任務分發器 
  7. String dispatcherName = "serialTaskDispatcher"
  8. TaskDispatcher serialTaskDispatcher = createSerialTaskDispatcher(dispatcherName, TaskPriority.DEFAULT); 
  9. //SpecTaskDispatcher專有任務分發器 
  10. TaskDispatcher uiTaskDispatcher = getUITaskDispatcher(); 
  • 開發步驟總結

為了更好地體現開發任務的的對比關系,筆者制表如下:

3.7.2 線程間的通信

時間:2021年7月24日10:32:10

注:書中對于這一塊也是和開發文檔一模一樣的。

學習總結:

目的:合理運用線程資源

元素:事件(InnerEvent)、任務(Runnable)、機制(EventHandler)、循環器(EventRunner)

場景:投遞事件(雙向)、投遞任務、

方法:

  1. 創建機制子類并重寫方法
  2. 創建循環器
  3. 創建機制子類實例
  4. 投遞事件(需要獲取事件實例)、投遞任務
  5. 啟動或停止機制

1.概述

  • 在開發過程中,開發者經常需要在當前線程中處理下載任務等較為耗時的操作,但是又不希望當前的線程受到阻塞。此時,就可以使用EventHandler機制。
  • EventHandler是HarmonyOS用于處理線程間通信的一種機制,可以通過EventRunner創建新線程,將耗時的操作放到新線程上執行。這樣既不阻塞原來的線程,任務又可以得到合理的處理。

2.基本概念

  • EventRunner是一種事件循環器,循環處理從該EventRunner創建的新線程的事件隊列中獲取InnerEvent事件或者Runnable任務。InnerEvent是EventHandler投遞的事件。
  • EventHandler是一種用戶在當前線程上投遞InnerEvent事件或者Runnable任務到異步線程上處理的機制。每一個EventHandler和指定的EventRunner所創建的新線程綁定,并且該新線程內部有一個事件隊列。EventHandler可以投遞指定的InnerEvent事件或Runnable任務到這個事件隊列。
  • EventRunner從事件隊列里循環地取出事件,如果取出的事件是InnerEvent事件,將在EventRunner所在線程執行processEvent回調;如果取出的事件是Runnable任務,將在EventRunner所在線程執行Runnable的run回調。一般,EventHandler有兩個主要作用:
  • 在不同線程間分發和處理InnerEvent事件或Runnable任務
  • 延遲處理InnerEvent事件或Runnable任務。

3.運作機制

使用EventHandler實現線程間通信的主要流程:

1.EventHandler投遞具體的InnerEvent事件或者Runnable任務到EventRunner所創建的線程的事件隊列。

2.EventRunner循環從事件隊列中獲取InnerEvent事件或者Runnable任務。

3.處理事件或任務:

  • 如果EventRunner取出的事件為InnerEvent事件,則觸發EventHandler的回調方法并觸發EventHandler的處理方法,在新線程上處理該事件。
  • 如果EventRunner取出的事件為Runnable任務,則EventRunner直接在新線程上處理Runnable任務。

4.約束限制

  • 在進行線程間通信的時候,EventHandler只能和EventRunner所創建的線程進行綁定,EventRunner創建時需要判斷是否創建成功,只有確保獲取的EventRunner實例非空時,才可以使用EventHandler綁定EventRunner。
  • 一個EventHandler只能同時與一個EventRunner綁定,一個EventRunner可以同時綁定多個EventHandler。

5.EventRunner工作模式

EventRunner的工作模式可以分為托管模式和手動模式。兩種模式是在調用EventRunner的create()方法時,通過選擇不同的參數來實現的,詳見API參考。默認為托管模式。

  • 托管模式:不需要開發者調用run()和stop()方法去啟動和停止EventRunner。當EventRunner實例化時,系統調用run()來啟動EventRunner;當EventRunner不被引用時,系統調用stop()來停止EventRunner。
  • 手動模式:需要開發者自行調用EventRunner的run()方法和stop()方法來確保線程的啟動和停止。

6.EventRunner、EventHandler的接口很多。

7.三種開發應用

  • EventHandler投遞InnerEvent事件
  • EventHandler投遞Runnable任務
  • 在新創建的線程里將事件投遞到原線程

3.6.17 系統剪貼板服務

時間:2021年7月24日08:28:14

系統剪貼板服務:在應用A中復制的數據,可以在應用B中粘貼

  • HarmonyOS提供了系統剪切板服務的操作接口
  • HarmonyOS提供了剪貼板數據的定義

注意:

  • 只有在前臺獲取焦點的應用才有讀取系統剪切板的權限
  • 寫入數據不會隨應用程序結束而被銷毀
  • 數據會被覆蓋
  • 同一設備剪切板單次傳遞內容不應超過800KB

接口說明:

SystePastedboard提供了系統剪貼板操作的相關接口(復制、粘貼、配置回調)

PageData是剪貼板服務操作的數據對象,一個PageData由若干內容節點(PageData.Record)和一個屬性集合對象(PageData.DataProperty)組成。

  • Record是存放剪貼板數據信息的最小單位,每個Record都有特定的MIME類型(文本、HTML、URL、Intent)
  • 剪貼板數據的屬性存放在DataProperty(時間戳、標簽)

開發步驟:

  • 獲取服務
  • A寫入數據
  • B讀取數據
  • C添加數據變化回調

小總結

  • 線程管理中四種任務分發器、三種派發任務、三種基礎操作、兩種屏障需要多多熟悉,根據前幾日做HCIA模擬題的經驗,這部分出題是必然的。
  • 線程通信需要總體把握,目的、場景、元素、方法。
  • 剪貼板的原理一起都沒有仔細學習過,感覺很簡單,今日學習發現確實很簡單,但有一些需要在開發的過程中注意的地方。

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-07-27 11:39:40

鴻蒙HarmonyOS應用

2021-07-21 15:33:03

鴻蒙HarmonyOS應用

2011-08-09 10:27:41

iOS剪貼板

2021-12-02 10:11:44

鴻蒙HarmonyOS應用

2010-02-02 17:47:59

C++操作剪貼板

2009-12-18 14:10:29

Ruby訪問剪貼板

2023-02-06 07:17:22

2024-04-09 08:27:01

Android高效管理數據

2016-05-11 15:01:31

Linux剪貼板管理器

2009-08-10 17:37:54

2020-12-14 05:57:01

clipboard.Selection execCommand

2022-03-31 22:53:47

Windows 11太陽谷2智能剪貼板

2018-03-23 10:15:28

Windows 10云剪貼板復制粘貼

2025-06-23 08:30:00

webAPI剪貼板

2021-08-29 07:43:43

CopyQ操作系統微軟

2019-08-19 13:40:34

Windows 10剪貼板Windows

2021-12-05 09:28:18

Windows 11操作系統微軟

2021-11-30 05:37:51

App監聽手機監管

2021-03-09 05:48:01

Windows10操作系統21H2

2020-10-12 09:40:57

Windows 10Windows操作系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99久久99久久精品国产片果冰 | 99精品在线观看 | 亚洲日韩中文字幕一区 | 成在线人视频免费视频 | 国产98色在线 | 日韩 | 在线观看中文字幕亚洲 | 国产欧美日韩一区 | 毛片久久久 | 91视频在线看 | 久久久久久亚洲 | 极品一区 | 精品国产一级 | 在线视频 欧美日韩 | 中文字幕第一页在线 | 久久久久久久电影 | 久久精品国产99国产 | 看片91 | 老司机成人在线 | 中文字幕在线观看一区 | 欧美一级二级视频 | 一区二区三区欧美 | 国产激情自拍视频 | 男人的天堂久久 | 亚洲精彩免费视频 | 成人一区二区三区在线观看 | 亚洲精品久久区二区三区蜜桃臀 | 国产一二三区免费视频 | 欧美久久电影 | 一级毛片中国 | 欧美另类视频在线 | 免费黄色的视频 | 国产成人精品一区二区三区视频 | 欧美激情a∨在线视频播放 成人免费共享视频 | 免费观看黄 | 99pao成人国产永久免费视频 | 国产午夜精品久久 | 欧美性久久久 | 96国产精品久久久久aⅴ四区 | 成人三级网址 | 国外成人在线视频网站 | 欧美日韩精品一区二区三区视频 |