自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)快速上手心得

開(kāi)發(fā) OpenHarmony
文章由鴻蒙社區(qū)產(chǎn)出,想要了解更多內(nèi)容請(qǐng)前往:51CTO和華為官方戰(zhàn)略合作共建的鴻蒙技術(shù)社區(qū)https://harmonyos.51cto.com

[[407006]]

想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):

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

https://harmonyos.51cto.com

談及接觸到HarmonyOS應(yīng)用的開(kāi)發(fā),主要是因?yàn)樵?020年年底接到華為一個(gè)項(xiàng)目為某兩所985高校開(kāi)發(fā)實(shí)驗(yàn)案例手冊(cè),一個(gè)是上層應(yīng)用方向的,一個(gè)是操作系統(tǒng)層的。

說(shuō)實(shí)話,當(dāng)時(shí)只是知道HarmonyOS,而沒(méi)有了解過(guò)其中任何開(kāi)發(fā)技術(shù)。但是這兩個(gè)層面自己也算很有底氣去接,首先是對(duì)新知識(shí)新技術(shù)的饑渴(特別還是國(guó)產(chǎn)化的),加上自己畢竟做過(guò)10年的應(yīng)用開(kāi)發(fā)和3年的操作系統(tǒng)以及底層協(xié)議棧開(kāi)發(fā)。

下面談?wù)勎沂侨绾螌W(xué)習(xí)一門新技術(shù)的吧。

作為一個(gè)開(kāi)發(fā)老鳥肯定是項(xiàng)目驅(qū)動(dòng)學(xué)習(xí),這個(gè)已經(jīng)很多年都是這樣了,從最初的vc到delphi到php、java到Android、python等等。

1、項(xiàng)目案例需求分析與項(xiàng)目移植

我這里就拿之前我之前編寫的實(shí)驗(yàn)指導(dǎo)手冊(cè)之一《HarmonyOS 手機(jī)通訊錄開(kāi)發(fā) 實(shí)驗(yàn)指導(dǎo)手冊(cè)》這個(gè)說(shuō)起吧。

首先,在編寫這個(gè)案例之前分析這個(gè)案例需求。對(duì)于我這個(gè)老鳥來(lái)說(shuō)基本不用多想,很小一個(gè)案例,頭腦中已經(jīng)有一個(gè)原型出來(lái)了,當(dāng)然沒(méi)有必要自己畫原型圖,這里貼一個(gè)最終實(shí)現(xiàn)的效果圖。

HarmonyOS應(yīng)用開(kāi)發(fā)快速上手心得-鴻蒙HarmonyOS技術(shù)社區(qū)

然后,根據(jù)以往的項(xiàng)目經(jīng)驗(yàn)來(lái)構(gòu)想,如果使用Android或者Vue實(shí)現(xiàn)該是怎樣的幾個(gè)步驟。其實(shí)Android和Vue的語(yǔ)法雖然不一樣,其實(shí)基本思路也是類似的,不同技術(shù)棧的切換對(duì)比式學(xué)習(xí)非常重要。

這里還有點(diǎn)需要切記,拿到一個(gè)項(xiàng)目時(shí),別著急看API和動(dòng)手寫代碼

經(jīng)過(guò)以上的構(gòu)思,我很快就形成了一個(gè)初步的功能實(shí)現(xiàn)思路,并且能盡可能地多融匯一些開(kāi)發(fā)常用的技術(shù)棧進(jìn)來(lái)。

(1)實(shí)現(xiàn)通訊錄主頁(yè)UI布局

疑問(wèn)點(diǎn):通訊錄的UI布局在HarmonyOS中如何實(shí)現(xiàn),里面涉及的UI組件Skd是否具備

(2)實(shí)現(xiàn)聯(lián)系人列表靜態(tài)數(shù)據(jù)渲染

(3)實(shí)現(xiàn)按鈕點(diǎn)擊、列表點(diǎn)擊、長(zhǎng)按等各種監(jiān)聽(tīng)事件,使用日志打印模擬業(yè)務(wù)、debug調(diào)試

(4)添加聯(lián)系人詳情頁(yè)面,實(shí)現(xiàn)頁(yè)面之間跳轉(zhuǎn)傳參

(5)通過(guò)彈出窗口來(lái)編寫添加聯(lián)系人頁(yè)面

(6)聯(lián)系人列表數(shù)據(jù)的動(dòng)態(tài)刷新

(7)靜態(tài)數(shù)據(jù)切換為本地持久化數(shù)據(jù),比如是否存在sqlite,相應(yīng)會(huì)對(duì)應(yīng)數(shù)據(jù)的CRUD操作

(8)靜態(tài)數(shù)據(jù)切換為服務(wù)端數(shù)據(jù),http網(wǎng)絡(luò)通信如何使用?是否涉及權(quán)限控制

(9)自定義組件使用

下面再來(lái)帶著這個(gè)思路和疑問(wèn)去網(wǎng)上找資料。我個(gè)人習(xí)慣優(yōu)先查閱官網(wǎng)資料。前期大家也別太依賴博客,畢竟博客里面的坑會(huì)一大堆,還跳不出來(lái),講到這希望社區(qū)別打我啊。起碼我編寫完成系列手冊(cè)時(shí)沒(méi)有翻閱博客,當(dāng)然可能那個(gè)時(shí)候的相關(guān)博客也極其少吧,畢竟官網(wǎng)資料也很少并且還存在部分錯(cuò)誤。

2、閱讀官方開(kāi)發(fā)文檔

現(xiàn)在華為官方文檔非常強(qiáng)大,我覺(jué)得大家想學(xué)HarmonyOS應(yīng)用開(kāi)發(fā)來(lái)看我的博客都有點(diǎn)多余了。

我這里講下看官方文檔的技巧吧,沒(méi)必要全篇通讀細(xì)讀,帶著項(xiàng)目需求去閱讀。首先我就是尋找目錄,看看我上面的功能需求HarmonyOS SDK是不是都支持。

閱讀之后發(fā)現(xiàn)HarmonyOS 存在兩個(gè)SDK,Java的和JS的,簡(jiǎn)單看了下入門案例就知道咋弄了,不用過(guò)于糾結(jié)其中細(xì)節(jié)了。JS的就對(duì)比VUE和微信小程序的思路去進(jìn)行即可,Java的就先類比Android的去弄,等后面具體編寫代碼實(shí)現(xiàn)功能的時(shí)候再來(lái)排坑。

所以后面又對(duì)該項(xiàng)目編寫了一個(gè)JS版本的通訊錄開(kāi)發(fā),以及后面發(fā)現(xiàn)HarmonyOS 重要的分布式開(kāi)發(fā)技術(shù),還編寫了Java和JS混合開(kāi)發(fā),JS FA調(diào)用Java PA的數(shù)據(jù)的內(nèi)容,這些都是在通讀文檔之后做了項(xiàng)目延申。

確認(rèn)好了SDK基本都支持我要的需求之后,下面就開(kāi)始實(shí)施代碼編輯了

3、開(kāi)發(fā)必備HelloWorld

作為一個(gè)老鳥,我一直給學(xué)生強(qiáng)調(diào)HelloWorld的重要性。自行參照官網(wǎng)入門案例搭建開(kāi)發(fā)環(huán)境,并且運(yùn)行起來(lái)HelloWorld項(xiàng)目。官網(wǎng)步驟很詳細(xì),沒(méi)有啥多解釋的。我這里強(qiáng)調(diào)幾個(gè)關(guān)鍵點(diǎn),HelloWorld工程項(xiàng)目組織結(jié)構(gòu)請(qǐng)好好看看,個(gè)人認(rèn)為前期最主要的就是要熟悉這個(gè)項(xiàng)目組織結(jié)構(gòu),特別是還分JS版和Java版的,如有不清楚的請(qǐng)閱讀官方文檔對(duì)這塊的講解。

至于調(diào)試,前期只有網(wǎng)絡(luò)版的模擬器,并且要華為賬號(hào)認(rèn)證,每個(gè)小時(shí)會(huì)自動(dòng)釋放,這個(gè)清楚習(xí)慣即可,沒(méi)必要糾結(jié)。

至于DevEco Studio這個(gè)IDE我沒(méi)什么多說(shuō)的,熟練使用過(guò)IDEA或者Android Studio等JetBrains全家桶產(chǎn)品的開(kāi)發(fā)者來(lái)說(shuō),就順手拈來(lái)了。剛接觸的讀者還是先花心簡(jiǎn)單熟悉下常用操作吧。

4、代碼編寫、閱讀官方文檔、填坑

由于前面已經(jīng)分解了開(kāi)發(fā)步驟,所以編寫代碼目的性非常明確,思路清晰。

如果是初學(xué)者缺乏項(xiàng)目經(jīng)驗(yàn),從一個(gè)個(gè)小語(yǔ)法知識(shí)點(diǎn)開(kāi)始學(xué)起,比如一個(gè)小小按鈕學(xué)半天,那樣開(kāi)發(fā)和學(xué)習(xí)就太慢了。所以我還是建議多用項(xiàng)目式貫穿學(xué)習(xí),特別是自己曾經(jīng)做過(guò)的項(xiàng)目移植或者需求非常清楚的項(xiàng)目代入。

既然知道了Java SDK開(kāi)發(fā),然后發(fā)現(xiàn)可以和Android進(jìn)行對(duì)比開(kāi)發(fā),那么這對(duì)Android老鳥來(lái)說(shuō)要做的就是編寫代碼邊做好差異化記錄筆記即可。之前我同事也在社區(qū)上發(fā)布了《安卓VS鴻蒙第三方件切換寶典》,就是這種開(kāi)發(fā)思維下的產(chǎn)物。

首先強(qiáng)調(diào)一個(gè)編寫代碼習(xí)慣。包結(jié)構(gòu)的合理劃分,包名清晰,然后就是類名、方法名、變量名、常量名命名規(guī)范,這樣即使注釋很少?zèng)]有詳細(xì)設(shè)計(jì)文檔也很方便閱讀代碼。

然后是git的使用,每完成一個(gè)核心步驟及時(shí)提交并且編寫簡(jiǎn)要明了的提交日志。

HarmonyOS應(yīng)用開(kāi)發(fā)快速上手心得-鴻蒙HarmonyOS技術(shù)社區(qū)

最后就是一步步去解決問(wèn)題了

(1)實(shí)現(xiàn)通訊錄主頁(yè)UI布局

針對(duì)本項(xiàng)目案例先把上下結(jié)構(gòu)菜單欄和空列表布局出來(lái),然后微微調(diào)整UI細(xì)節(jié),此時(shí)你就會(huì)對(duì)布局內(nèi)容掌握的七七八八了,沒(méi)有必要進(jìn)一步深究了。此時(shí)可以記錄下Android和HarmonyOS的布局知識(shí)點(diǎn)異同點(diǎn)

(2)實(shí)現(xiàn)聯(lián)系人列表靜態(tài)數(shù)據(jù)渲染

發(fā)現(xiàn)HarmonyOS和Android列表數(shù)據(jù)渲染實(shí)現(xiàn)類似,也是采用一個(gè)lsit ui組件配合provider進(jìn)行實(shí)現(xiàn)。

(3)實(shí)現(xiàn)按鈕點(diǎn)擊、列表點(diǎn)擊、長(zhǎng)按等各種監(jiān)聽(tīng)事件,使用日志打印模擬業(yè)務(wù)、debug調(diào)試

點(diǎn)擊事件監(jiān)聽(tīng)是應(yīng)用中最常用來(lái)觸發(fā)業(yè)務(wù)邏輯的,前期在沒(méi)有實(shí)際業(yè)務(wù)的時(shí)候,請(qǐng)用日志打印來(lái)取代實(shí)際業(yè)務(wù)即可。

初學(xué)者往往會(huì)吐槽sysout、log好無(wú)聊,后面你就會(huì)發(fā)現(xiàn)它最好用。這里我重點(diǎn)強(qiáng)調(diào)一個(gè)問(wèn)題,做開(kāi)發(fā)一定要hold住關(guān)鍵點(diǎn),現(xiàn)在是要學(xué)習(xí)掌握點(diǎn)擊事件的觸發(fā),不用真要出一個(gè)實(shí)際業(yè)務(wù)場(chǎng)景,比如做大數(shù)據(jù)分析,重點(diǎn)是采用哪些大數(shù)據(jù)技術(shù)去根據(jù)原數(shù)據(jù)集分析出我所關(guān)注的哪些維度的數(shù)據(jù),這些才是核心,而不是這些數(shù)據(jù)如何漂亮的展示出來(lái)。

當(dāng)你覺(jué)得console下打印這些數(shù)據(jù)最漂亮的時(shí)候,我會(huì)覺(jué)得你進(jìn)步了。當(dāng)然回過(guò)頭來(lái),后面還是要在些這些事件里面加入實(shí)際業(yè)務(wù)的操作,比如長(zhǎng)按刪除聯(lián)系人的操作,這樣你就完全知道實(shí)際業(yè)務(wù)和最初所學(xué)基礎(chǔ)知識(shí)點(diǎn)是如何串聯(lián)起來(lái)的了,達(dá)到此目的即可。

(4)添加聯(lián)系人詳情頁(yè)面,實(shí)現(xiàn)頁(yè)面之間跳轉(zhuǎn)傳參

數(shù)據(jù)的交互可以說(shuō)是應(yīng)用開(kāi)發(fā)時(shí)候的核心,比如傳統(tǒng)的web開(kāi)發(fā)、前后端分離模式的web開(kāi)發(fā)、App類CS程序開(kāi)發(fā),都逃不過(guò)數(shù)據(jù)的交互。

實(shí)現(xiàn)此功能我們首先要拋開(kāi)某門特定的編程技術(shù),而是想著以下幾個(gè)關(guān)鍵點(diǎn):如何創(chuàng)建多個(gè)頁(yè)面、如何設(shè)置某個(gè)頁(yè)面為首頁(yè)、在哪里觸發(fā)頁(yè)面跳轉(zhuǎn)、前一個(gè)頁(yè)面的數(shù)據(jù)如何傳遞到下一個(gè)頁(yè)面、數(shù)據(jù)傳遞支持哪些數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)如何從下一個(gè)頁(yè)面回傳回來(lái),然后我們?cè)賮?lái)去閱讀官方文檔找尋相應(yīng)API進(jìn)行處理即可。

這里著重提示,我個(gè)人開(kāi)發(fā)理念里面把API語(yǔ)法放到非常低的地位,從來(lái)不記憶API,比如你只需要知道SDK中肯定有個(gè)API能夠?qū)崿F(xiàn)頁(yè)面跳轉(zhuǎn)的功能,然后自己能夠快速的查閱資料或者自己的筆記、編寫過(guò)的demo,做到眼熟即可。保證常用的API在你很長(zhǎng)一段時(shí)間沒(méi)有做此類開(kāi)發(fā)之后,依然能在1分鐘之內(nèi)解決問(wèn)題。特別是在你學(xué)習(xí)過(guò)七八門編程語(yǔ)言之后,越發(fā)不可能去記各種API了。

(5)通過(guò)彈出窗口來(lái)編寫添加聯(lián)系人頁(yè)面

(6)聯(lián)系人列表數(shù)據(jù)的動(dòng)態(tài)刷新

這兩步依然是查閱官方資料即可實(shí)現(xiàn),做好對(duì)比和記錄即可。

(7)靜態(tài)數(shù)據(jù)切換為本地持久化數(shù)據(jù),比如是否存在sqlite,會(huì)對(duì)應(yīng)數(shù)據(jù)的CRUD操作

這步涉及到數(shù)據(jù)庫(kù)的使用,查閱資料之后,發(fā)現(xiàn)依然是傳統(tǒng)的原生sql操作和ORM模型操作。至于CRUD我不多說(shuō)了,初學(xué)者最開(kāi)始主要都是干這個(gè),開(kāi)發(fā)老鳥見(jiàn)到這個(gè)都想吐了。這里不多說(shuō),我認(rèn)為原生sql雖然沒(méi)有ORM操作起來(lái)清爽,但是學(xué)習(xí)成本低,學(xué)會(huì)原生sql玩轉(zhuǎn)所有數(shù)據(jù)庫(kù),因此我還是更推薦原生sql使用。

到這一步有一個(gè)我非常想重點(diǎn)強(qiáng)調(diào)的步驟就是,對(duì)方法(即函數(shù))的編寫。大的業(yè)務(wù)層面面向接口設(shè)計(jì),落實(shí)業(yè)務(wù)的時(shí)候面向?qū)ο笤O(shè)計(jì),實(shí)施落地的時(shí)候最重要的就是方法的設(shè)計(jì)編寫。一個(gè)優(yōu)秀的代碼開(kāi)發(fā)者,在想清楚需求之后,只需要編寫出方法的兩個(gè)關(guān)鍵要素,方法形參和返回值,那么他一定就能實(shí)現(xiàn)該業(yè)務(wù)。這里就重點(diǎn)在于他對(duì)業(yè)務(wù)的深入理解和數(shù)據(jù)的交互,因此前期在編寫代碼的時(shí)候幾步偽代碼就可以完成一個(gè)功能模塊的設(shè)計(jì)與實(shí)現(xiàn)。

下面我編寫下偽代碼:

  1. (1)---實(shí)現(xiàn)布局---- 
  2. (2)在AbilitySlice中關(guān)聯(lián)布局,并且初始化要使用的各個(gè)UI組件,初始化監(jiān)聽(tīng)事件 
  3. (3)編寫三個(gè)核心業(yè)務(wù)方法,用于數(shù)據(jù)的幾種場(chǎng)景切換 
  4.  //獲取sqlite數(shù)據(jù)庫(kù)中的數(shù)據(jù),集成sqlite之后調(diào)用這個(gè)方法取代之前的靜態(tài)數(shù)據(jù)方法 
  5.     private List<Contacts> getSqliteData() { 
  6.  
  7.     } 
  8. //生成靜態(tài)的列表數(shù)據(jù)進(jìn)行模擬,在對(duì)接sqlite或者服務(wù)端之后不再使用 
  9.     private List<Contacts> getData() { 
  10.     } 
  11.  //通過(guò)http請(qǐng)求獲取服務(wù)端數(shù)據(jù) 
  12.     private void getServerData() { 
  13.     } 
  14. (4)菜單選擇監(jiān)聽(tīng)事件切換數(shù)據(jù)源加載 
  15. switch (position) { 
  16.     case 0: 
  17.         getData(); 
  18.         
  19.         break; 
  20.     case 1: 
  21.         getSqliteData() 
  22.         break; 
  23.     case 2: 
  24.         getServerData(); 
  25.         break; 

這里提到數(shù)據(jù)庫(kù)的操作,我們也可以引入習(xí)慣的dao接口設(shè)計(jì)考慮,編寫相應(yīng)dao層,然后設(shè)計(jì)實(shí)現(xiàn)類進(jìn)行實(shí)現(xiàn),同時(shí)上面的偽代碼方法還可以封裝到一個(gè)獲取數(shù)據(jù)服務(wù)的Service接口中,然后利用業(yè)務(wù)接口進(jìn)行實(shí)現(xiàn)。此處依然是想強(qiáng)調(diào)設(shè)計(jì)先于代碼。

(8)靜態(tài)數(shù)據(jù)切換為服務(wù)端數(shù)據(jù),http網(wǎng)絡(luò)通信如何使用?是否涉及權(quán)限控制

http網(wǎng)絡(luò)通信在app開(kāi)發(fā)中必不可少的東西,既然是Java SDK,那顯然會(huì)想到支持最原生的HttpConnection API,查閱官網(wǎng)資料也會(huì)發(fā)現(xiàn)肯定是支持的,但是一般不會(huì)使用原生的,往往會(huì)引入一些第三方優(yōu)秀庫(kù)進(jìn)行開(kāi)發(fā),比如okhttp就是存粹的Java jar包,進(jìn)入開(kāi)發(fā)即可。由于不是Android開(kāi)發(fā),這里不要引入Android的aar庫(kù)進(jìn)行開(kāi)發(fā)。

網(wǎng)絡(luò)開(kāi)發(fā)中就會(huì)再遇到各種不同的坑,比如權(quán)限申請(qǐng)、ui主線程不能執(zhí)行網(wǎng)絡(luò)耗時(shí)任務(wù)等,這些都可以通過(guò)經(jīng)驗(yàn)或者閱讀報(bào)錯(cuò)日志一一解決。

提到網(wǎng)絡(luò)通信交互,不得不想到各種MVC、MVP、MVVM設(shè)計(jì)模式了,起初當(dāng)然最熟悉的還是MVC,先使用傳統(tǒng)的MVC去進(jìn)行開(kāi)發(fā),后續(xù)可以自行封裝MVP的開(kāi)發(fā)模式。

(9)自定義組件使用

HarmonyOS處于起步階段,最初的SDK開(kāi)發(fā)包只會(huì)帶有基礎(chǔ)功能的開(kāi)發(fā),如果全部基于原生SDK進(jìn)行開(kāi)發(fā),項(xiàng)目開(kāi)發(fā)效率肯定會(huì)比傳統(tǒng)的Android、iOS低太多,因?yàn)樗麄円呀?jīng)非常成熟,有大量?jī)?yōu)秀的開(kāi)源第三方組件庫(kù),說(shuō)白了現(xiàn)在開(kāi)發(fā)一個(gè)應(yīng)用就跟碼積木一樣?,F(xiàn)在就需要大量?jī)?yōu)秀開(kāi)發(fā)者造出各種優(yōu)秀的輪子出來(lái)讓大家可以更快速的開(kāi)發(fā)項(xiàng)目。

編寫一個(gè)自定義組件確實(shí)比完成一個(gè)簡(jiǎn)單的項(xiàng)目需求要更加有意思和成就感,即使一個(gè)非常小的組件。這就需要耐心閱讀官方SDK API甚至底層代碼實(shí)現(xiàn)了,當(dāng)然現(xiàn)在官網(wǎng)文檔很齊全,我在編寫第一個(gè)組件的時(shí)候還是消耗了很多精力的,那個(gè)時(shí)候文檔缺乏,只能看比較生澀的API文檔,然后半猜半試搗鼓出來(lái)。

(10)重要特性功能引入

讀完官方文檔之后,發(fā)現(xiàn)了分布式數(shù)據(jù)通信、協(xié)同、流轉(zhuǎn)等重要技術(shù),后面就主要思考使用場(chǎng)景將其整合開(kāi)發(fā)進(jìn)去。本案例正好可以運(yùn)用分布式PA和FA的互相調(diào)用,對(duì)于這個(gè)功能引用也可以完美的通過(guò)該項(xiàng)目案例進(jìn)行整合,這種整合類的也能更考驗(yàn)對(duì)新知識(shí)的融會(huì)貫通。比如JS開(kāi)發(fā)一個(gè)通訊錄FA,然后Java開(kāi)發(fā)通訊錄數(shù)據(jù)服務(wù)PA,F(xiàn)A去獲取PA中的數(shù)據(jù)即可。

5、無(wú)法解決的坑如何求助

這里著重給初學(xué)者一個(gè)忠告,不要遇到一個(gè)問(wèn)題就馬上求助問(wèn)人,一個(gè)問(wèn)題出現(xiàn)首先要通過(guò)查看日志進(jìn)行解決,自行翻閱資料,反復(fù)嘗試,錯(cuò)誤復(fù)現(xiàn)手段記錄,對(duì)比場(chǎng)景解決等措施自行想辦法解決,只有經(jīng)過(guò)反復(fù)嘗試發(fā)現(xiàn)是問(wèn)題的時(shí)候再來(lái)求助老師,并且求助之前能夠清晰的描述問(wèn)題現(xiàn)象。

在項(xiàng)目開(kāi)發(fā)中發(fā)現(xiàn)了官方文檔、工具等各種bug,做好了充分記錄和證據(jù)論證,然后提交給了華為方進(jìn)行求助和整改,對(duì)于缺失的關(guān)鍵API操作或者技術(shù)描述也能明確提出合理化訴求進(jìn)行求助。

6、開(kāi)發(fā)完成之后的項(xiàng)目復(fù)盤

  1. 梳理總結(jié)開(kāi)發(fā)思路,主要是分析前期的思路是否存在不準(zhǔn)確的地方;
  2. 梳理回顧開(kāi)發(fā)過(guò)程中遇到的坑點(diǎn),自己是如何一步步填坑的;
  3. 整理相關(guān)文檔,進(jìn)行歸檔留存;
  4. 整理該項(xiàng)目中所運(yùn)用到的技術(shù)棧;
  5. 梳理該項(xiàng)目待持續(xù)改進(jìn)的地方;

7、本項(xiàng)目所用到的相關(guān)的一些技術(shù)點(diǎn)

1.HarmonyOS移動(dòng)應(yīng)用開(kāi)發(fā)工具(DevEco Studio)使用;

2.UI組件使用,包括Text,Button,TextFiled,Image,RadioButton,

RadioContainer,ToastDialog,ListContainer;

3.UI布局的使用,包括DirectionalLayout,DependentLayout;

4.日志打印,HiLog的使用;

5.各種事件監(jiān)聽(tīng)操作與業(yè)務(wù)邏輯實(shí)現(xiàn);(重難點(diǎn))

6.ListContainer子布局結(jié)合RecycleItemProvider的使用;(重難點(diǎn))

7.對(duì)話框以及自定義對(duì)話框的使用;(重難點(diǎn))

8.頁(yè)面生命周期以及頁(yè)面之間跳轉(zhuǎn)與傳參;

9.自定義組件(同時(shí)涉及到Canvas)以及如何調(diào)用;(重難點(diǎn))

10.數(shù)據(jù)存儲(chǔ)操作,主要涉及sqlite數(shù)據(jù)庫(kù)存儲(chǔ);(重難點(diǎn))

11.通過(guò)HTTP網(wǎng)絡(luò)通信與服務(wù)端交互;(重難點(diǎn))

12.多線程通信;(重難點(diǎn))

13.代碼編程規(guī)范、設(shè)計(jì)模式;(重難點(diǎn))

8、個(gè)人總結(jié)

學(xué)習(xí)沒(méi)有捷徑,只有依靠一腔熱血和持之以恒的努力。反復(fù)跳坑填坑,多了自然觸類旁通,即使剛新接觸一個(gè)技術(shù),也能快速搞定一個(gè)項(xiàng)目的移植,比如這個(gè)小項(xiàng)目案例從剛接觸到一天開(kāi)發(fā)完成都足夠了。

學(xué)習(xí)編程切忌執(zhí)著語(yǔ)法和API,而要注重思維鍛煉,多練習(xí)多踩坑多對(duì)比多總結(jié)才是王道。

對(duì)于開(kāi)發(fā)老鳥,我對(duì)快速掌握HarmonyOS開(kāi)發(fā)的建議是將自己原有的項(xiàng)目移植,并且盡可能多融入一些技術(shù)點(diǎn)。

對(duì)于初學(xué)者,我建議是找到一個(gè)我這種項(xiàng)目貫穿式案例然后配合自己查閱官方資料進(jìn)行結(jié)合學(xué)習(xí),也會(huì)事半功倍。

應(yīng)用做多了,會(huì)慢慢失去興趣了,都是各種數(shù)據(jù)交互和UI渲染,這時(shí)強(qiáng)烈推薦大家去關(guān)注下操作系統(tǒng)層的源碼啊,此時(shí)c的代碼或許會(huì)看起來(lái)更親切哦,我這里推薦的不是開(kāi)發(fā)板和上層傳數(shù)據(jù)這類應(yīng)用開(kāi)發(fā),而是操作系統(tǒng)內(nèi)核代碼,值得一看。

想了解更多內(nèi)容,請(qǐng)?jiān)L問(wèn):

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

https://harmonyos.51cto.com

 

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

2020-11-09 11:56:49

HarmonyOS

2020-09-28 15:13:04

鴻蒙

2021-02-07 12:08:39

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2020-11-17 08:43:20

ElasticSear

2014-12-12 10:25:21

Xcode 6iOS快速上手

2011-07-26 13:58:17

LINQ

2022-08-09 16:01:24

應(yīng)用開(kāi)發(fā)鴻蒙

2021-01-11 11:04:49

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2022-08-21 07:17:16

LinkerdKubernetes服務(wù)網(wǎng)格

2013-11-19 12:53:33

OA信息化

2021-12-10 08:13:02

MatplotlibpythonAPI

2022-08-19 07:13:45

SQL方法編程

2022-08-25 21:46:51

網(wǎng)絡(luò)通訊應(yīng)用開(kāi)發(fā)

2023-03-08 12:43:44

微軟AI

2024-03-26 15:19:36

鴻蒙應(yīng)用開(kāi)發(fā)開(kāi)發(fā)工具
點(diǎn)贊
收藏

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