偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

HarmonyOS《鴻蒙操作系統(tǒng)開發(fā)入門經(jīng)典》|線程管理|剪貼板

開發(fā) OpenHarmony
本文包含筆者對徐文禮老師的《鴻蒙操作系統(tǒng)開發(fā)入門經(jīng)典》的學(xué)習(xí)過程中的筆記總結(jié)、拓展思考、案例反饋、閱讀體驗(yàn)。

[[413804]]

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

本文引言

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

本文包含筆者對徐文禮老師的《鴻蒙操作系統(tǒng)開發(fā)入門經(jīng)典》的學(xué)習(xí)過程中的筆記總結(jié)、拓展思考、案例反饋、閱讀體驗(yàn)。

為尊重老師的知識產(chǎn)權(quán)和精簡本文,本文不會粘貼代碼、倒置案例、機(jī)械打字。

3.7 線程管理

3.7.1線程管理

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

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

(from開發(fā)文檔)

1.概述

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

2.場景介紹

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

3.接口說明

  • TaskDispatcher是一個任務(wù)分發(fā)器,它是Ability分發(fā)任務(wù)的基本接口,隱藏任務(wù)所在線程的實(shí)現(xiàn)細(xì)節(jié)。
  • 為保證應(yīng)用有更好的響應(yīng)性,我們需要設(shè)計任務(wù)的優(yōu)先級。在UI線程上運(yùn)行的任務(wù)默認(rèn)以高優(yōu)先級運(yùn)行。

  • TaskDispatcher具有多種實(shí)現(xiàn),每種實(shí)現(xiàn)對應(yīng)不同的任務(wù)分發(fā)器。在分發(fā)任務(wù)時可以指定任務(wù)的優(yōu)先級,由同一個任務(wù)分發(fā)器分發(fā)出的任務(wù)具有相同的優(yōu)先級。系統(tǒng)提供的任務(wù)分發(fā)器有GlobalTaskDispatcher、ParallelTaskDispatcher、SerialTaskDispatcher 、SpecTaskDispatcher。

為了更好地體現(xiàn)四個任務(wù)分發(fā)器的對比關(guān)系,筆者制表如下:

注:UITaskDispatcher、MainTaskDispatcher都屬于專有任務(wù)分發(fā)器SpecTastDispatcher。建議使用UITaskDispatcher。

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

為了更好地體現(xiàn)開發(fā)任務(wù)的的對比關(guān)系,筆者制表如下:

3.7.2 線程間的通信

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

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

學(xué)習(xí)總結(jié):

目的:合理運(yùn)用線程資源

元素:事件(InnerEvent)、任務(wù)(Runnable)、機(jī)制(EventHandler)、循環(huán)器(EventRunner)

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

方法:

  1. 創(chuàng)建機(jī)制子類并重寫方法
  2. 創(chuàng)建循環(huán)器
  3. 創(chuàng)建機(jī)制子類實(shí)例
  4. 投遞事件(需要獲取事件實(shí)例)、投遞任務(wù)
  5. 啟動或停止機(jī)制

1.概述

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

2.基本概念

  • EventRunner是一種事件循環(huán)器,循環(huán)處理從該EventRunner創(chuàng)建的新線程的事件隊(duì)列中獲取InnerEvent事件或者Runnable任務(wù)。InnerEvent是EventHandler投遞的事件。
  • EventHandler是一種用戶在當(dāng)前線程上投遞InnerEvent事件或者Runnable任務(wù)到異步線程上處理的機(jī)制。每一個EventHandler和指定的EventRunner所創(chuàng)建的新線程綁定,并且該新線程內(nèi)部有一個事件隊(duì)列。EventHandler可以投遞指定的InnerEvent事件或Runnable任務(wù)到這個事件隊(duì)列。
  • EventRunner從事件隊(duì)列里循環(huán)地取出事件,如果取出的事件是InnerEvent事件,將在EventRunner所在線程執(zhí)行processEvent回調(diào);如果取出的事件是Runnable任務(wù),將在EventRunner所在線程執(zhí)行Runnable的run回調(diào)。一般,EventHandler有兩個主要作用:
  • 在不同線程間分發(fā)和處理InnerEvent事件或Runnable任務(wù)
  • 延遲處理InnerEvent事件或Runnable任務(wù)。

3.運(yùn)作機(jī)制

使用EventHandler實(shí)現(xiàn)線程間通信的主要流程:

1.EventHandler投遞具體的InnerEvent事件或者Runnable任務(wù)到EventRunner所創(chuàng)建的線程的事件隊(duì)列。

2.EventRunner循環(huán)從事件隊(duì)列中獲取InnerEvent事件或者Runnable任務(wù)。

3.處理事件或任務(wù):

  • 如果EventRunner取出的事件為InnerEvent事件,則觸發(fā)EventHandler的回調(diào)方法并觸發(fā)EventHandler的處理方法,在新線程上處理該事件。
  • 如果EventRunner取出的事件為Runnable任務(wù),則EventRunner直接在新線程上處理Runnable任務(wù)。

4.約束限制

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

5.EventRunner工作模式

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

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

6.EventRunner、EventHandler的接口很多。

7.三種開發(fā)應(yīng)用

  • EventHandler投遞InnerEvent事件
  • EventHandler投遞Runnable任務(wù)
  • 在新創(chuàng)建的線程里將事件投遞到原線程

3.6.17 系統(tǒng)剪貼板服務(wù)

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

系統(tǒng)剪貼板服務(wù):在應(yīng)用A中復(fù)制的數(shù)據(jù),可以在應(yīng)用B中粘貼

  • HarmonyOS提供了系統(tǒng)剪切板服務(wù)的操作接口
  • HarmonyOS提供了剪貼板數(shù)據(jù)的定義

注意:

  • 只有在前臺獲取焦點(diǎn)的應(yīng)用才有讀取系統(tǒng)剪切板的權(quán)限
  • 寫入數(shù)據(jù)不會隨應(yīng)用程序結(jié)束而被銷毀
  • 數(shù)據(jù)會被覆蓋
  • 同一設(shè)備剪切板單次傳遞內(nèi)容不應(yīng)超過800KB

接口說明:

SystePastedboard提供了系統(tǒng)剪貼板操作的相關(guān)接口(復(fù)制、粘貼、配置回調(diào))

PageData是剪貼板服務(wù)操作的數(shù)據(jù)對象,一個PageData由若干內(nèi)容節(jié)點(diǎn)(PageData.Record)和一個屬性集合對象(PageData.DataProperty)組成。

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

開發(fā)步驟:

  • 獲取服務(wù)
  • A寫入數(shù)據(jù)
  • B讀取數(shù)據(jù)
  • C添加數(shù)據(jù)變化回調(diào)

小總結(jié)

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

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2021-07-27 11:39:40

鴻蒙HarmonyOS應(yīng)用

2021-07-21 15:33:03

鴻蒙HarmonyOS應(yīng)用

2011-08-09 10:27:41

iOS剪貼板

2021-12-02 10:11:44

鴻蒙HarmonyOS應(yīng)用

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高效管理數(shù)據(jù)

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云剪貼板復(fù)制粘貼

2021-08-29 07:43:43

CopyQ操作系統(tǒng)微軟

2025-06-23 08:30:00

webAPI剪貼板

2019-08-19 13:40:34

Windows 10剪貼板Windows

2021-12-05 09:28:18

Windows 11操作系統(tǒng)微軟

2021-11-30 05:37:51

App監(jiān)聽手機(jī)監(jiān)管

2021-03-09 05:48:01

Windows10操作系統(tǒng)21H2

2020-10-12 09:40:57

Windows 10Windows操作系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號