如何系統(tǒng)有效的學(xué)習(xí)androidapi
互聯(lián)網(wǎng)的高速發(fā)展促使IT人才越來(lái)越搶手,Android開(kāi)發(fā)工程師這一職業(yè)備受青睞。那么如何成為一名優(yōu)秀的Android開(kāi)發(fā)工程師?以下是學(xué)習(xí)啦小編分享給大家的有效的學(xué)習(xí)android api的方法,希望可以幫到你!
有效的學(xué)習(xí)android api的方法
英語(yǔ)
老實(shí)說(shuō),沒(méi)有比英語(yǔ)性價(jià)比更高的,需要學(xué)習(xí)的東西了。靠著別人的翻譯,或者機(jī)翻,終究不是辦法的。筆者自己日語(yǔ)英語(yǔ)姑且算是熟練掌握的地步,但在初期直接看那些全英文的書(shū)籍,仍然會(huì)覺(jué)得頭痛(謝謝HKUST虐我),但堅(jiān)持下來(lái)就會(huì)發(fā)現(xiàn)其實(shí)計(jì)算機(jī)的英語(yǔ)還是有一個(gè)范圍的,多看看熟悉起來(lái),就會(huì)覺(jué)得并沒(méi)有什么難,甚至比起很多翻譯來(lái)說(shuō)更容易看懂。
混跡GitHub就會(huì)發(fā)現(xiàn)國(guó)內(nèi)的很多開(kāi)發(fā)者英語(yǔ)上欠缺還是很大的,尤其是一些description和readme直接就上中文的。即便你英語(yǔ)渣,機(jī)翻也行啊。畢竟是計(jì)算機(jī)社區(qū),英語(yǔ)才是通用語(yǔ)言。用中文去一些國(guó)外開(kāi)發(fā)者的倉(cāng)庫(kù)里提issue或者回復(fù)也是一種很粗魯?shù)男袨椤?/p>
如果讓我說(shuō)一種對(duì)技術(shù)幫助做大的語(yǔ)言,那必然就是英語(yǔ)。有了英語(yǔ),才能真正地獨(dú)立學(xué)習(xí)。
問(wèn)小白問(wèn)題之前,你Google過(guò)嗎?如果讓我看到一個(gè)開(kāi)發(fā)動(dòng)不動(dòng)去搜百度,那我估計(jì)會(huì)武斷地認(rèn)定他很菜。其實(shí)Google是我們最好的老師,只要能正確把握問(wèn)題的關(guān)鍵字,幾乎沒(méi)有找不到的答案,大部分會(huì)在StackOverflow上,其他散落在GitHub、博客等等地方。
如果你要找的知識(shí)實(shí)在冷門(mén),比如react native的一些深入用法,android上的視頻so閹割這種,那恐怕只能找找做這塊的朋友或者自己研究了,國(guó)內(nèi)有一些好心的開(kāi)發(fā)者或許會(huì)分享在自己的博客。
至于科學(xué)上網(wǎng),這個(gè)話題相關(guān)的技術(shù)太多了,請(qǐng)自行找方法,SS也好,都很簡(jiǎn)單,相對(duì)的投入和產(chǎn)出對(duì)程序員來(lái)說(shuō)性價(jià)比是很高的。實(shí)在不想花錢(qián)的去用AWS的免費(fèi)云服務(wù)器搭SS也行。
實(shí)踐
看是沒(méi)有用的。比如看一篇關(guān)于Hybrid App原理的文章,或許它寫(xiě)得很好,但其實(shí)就算看完了,讓我自己去寫(xiě)一個(gè),或者講講怎么去做一個(gè)我們應(yīng)用的版本,Android/iOS端通用的方案,最后也是支支吾吾說(shuō)的不知所以。最后還是要去實(shí)踐做一些Hybrid頁(yè)面才能真正掌握,能說(shuō)清楚這里面的原理和應(yīng)用場(chǎng)景。
紙上談兵終覺(jué)淺。
警惕體力勞動(dòng)
當(dāng)你的工作成為一種體力勞動(dòng),而自己無(wú)法從中獲得新的體驗(yàn)和知識(shí)的時(shí)候,需要警惕究竟發(fā)生了什么。
想得太少
對(duì)做的內(nèi)容停留在完成的階段,而不對(duì)更好的方案,實(shí)現(xiàn)細(xì)節(jié)去思考更多,比如用了某個(gè)API,會(huì)不會(huì)去仔細(xì)看看其究竟是怎么做的?;蛟S你知道Handler,Looper,那你知不知道主線程的一切,四大組件的生命周期,各種View的觸摸事件都是消息驅(qū)動(dòng),在mainLooper里面進(jìn)行處理的呢?
工作內(nèi)容重復(fù)
當(dāng)Focus在一塊上太久之后,難免會(huì)碰到這種瓶頸,這時(shí)候可以看看是不是能換一塊做,比如做做緩存、Hybrid、啟動(dòng)優(yōu)化、視頻等等??梢宰龅念I(lǐng)域很多,實(shí)在發(fā)現(xiàn)興趣不在此,換著做后臺(tái)或者前端也行。倘若因?yàn)閭€(gè)人原因,比如公司不讓換或者可能工資會(huì)低很多,擠一擠時(shí)間在side project里面搞搞也可以,只是有沒(méi)有心的問(wèn)題罷了。
我面試過(guò)一些做Android 5-6年的程序員,但大部分真的連一些優(yōu)秀的2-3年經(jīng)驗(yàn)的開(kāi)發(fā)者都遠(yuǎn)遠(yuǎn)不如,問(wèn)設(shè)計(jì)不懂設(shè)計(jì),問(wèn)流行的開(kāi)源項(xiàng)目回答就是“好像聽(tīng)說(shuō)過(guò)”。我不希望我認(rèn)識(shí)的開(kāi)發(fā)者以后變成這樣的人。但你若是總是重復(fù)勞動(dòng),難免像這樣1年的工作經(jīng)驗(yàn)重復(fù)了5年。
在額外學(xué)習(xí)的時(shí)候,更多關(guān)注的應(yīng)該是不同的地方,而不是說(shuō)這個(gè)學(xué)Python,下個(gè)月去學(xué)Go,想想語(yǔ)言的差異性在哪里,自己試試看做一些項(xiàng)目,培養(yǎng)全棧工程師的底子。還在念大學(xué)的時(shí)候,我學(xué)了C、C++、Java、Node.js、Python、Ruby、PHP、HTML、Perl、SQL/Redis/HBase等等等等,但對(duì)每個(gè)的理解都不夠深刻,現(xiàn)在想來(lái)那時(shí)候是做錯(cuò)了的,思考的都不夠深刻,也直到這一兩年,我才足夠明白這個(gè)錯(cuò)誤。
你應(yīng)該有自己的專長(zhǎng),但也要能從全局的角度思考問(wèn)題,一個(gè)不懂前端的后端老大會(huì)導(dǎo)致前端過(guò)重不靈活,反正只要自己這兒的模塊清晰就好,一個(gè)不懂前端的前端老大也會(huì)讓下面的人不要抱怨,做出來(lái)就好。
公司問(wèn)題
發(fā)生在一些項(xiàng)目經(jīng)理逼得特別緊,老大又比較無(wú)能的地方。項(xiàng)目經(jīng)理為了向上面交待,對(duì)工程師說(shuō)“這個(gè)進(jìn)度能不能再壓一下呀”,或者干脆直接不聽(tīng)工程師的意見(jiàn)強(qiáng)行縮短工期,導(dǎo)致沒(méi)有時(shí)間去深入學(xué)習(xí)。老大明知這種情況,卻睜一只眼閉一只眼。這種公司,還是離開(kāi)為妙。
一個(gè)合格的leader,或者說(shuō)mentor應(yīng)該做些什么?至少?gòu)奈业慕嵌葋?lái)看,盡管對(duì)公司他需要對(duì)項(xiàng)目負(fù)責(zé),但對(duì)團(tuán)隊(duì)內(nèi)的開(kāi)發(fā)者,他更應(yīng)該做的是觀察和指導(dǎo),看清楚那些團(tuán)隊(duì)毒瘤(不做正經(jīng)事,得過(guò)且過(guò),假加班,搶功勞推脫責(zé)任,等等),營(yíng)造團(tuán)隊(duì)氛圍,而不是一味Push催進(jìn)度和表現(xiàn)自己。
記錄和總結(jié)
寫(xiě)博客是為了什么?
至少對(duì)我來(lái)說(shuō),寫(xiě)下的東西更多是對(duì)自己的一個(gè)總結(jié)和交待。如果我能寫(xiě)下來(lái),至少能證明我有信心自己確實(shí)是這么去理解的,沒(méi)有去坑人。另外,姑且也算是一種成長(zhǎng)的足跡吧,偶爾自己還會(huì)去看看筆記。
分享也是目的之一,希望大家能互相進(jìn)步,這樣才能促進(jìn)發(fā)展。
寫(xiě)博客也好,寫(xiě)一些筆記也好,點(diǎn)點(diǎn)滴滴也是對(duì)自己的一種整理。
問(wèn)自己
想清楚自己要的究竟是什么。
做全還是鉆?想做一個(gè)超強(qiáng)并發(fā)量的后臺(tái)?想黑別人的系統(tǒng)?想做出精準(zhǔn)有效的推薦算法?還是想做別人能實(shí)際用到的產(chǎn)品?
筆者正是因?yàn)橄胍氖呛笳?,所以成為了Android開(kāi)發(fā)(為什么沒(méi)有選iOS,大約是Android的開(kāi)放性吸引了我)。而現(xiàn)在,因?yàn)榘l(fā)現(xiàn)自己欠缺的(對(duì)前端駕輕就熟,大部分的事情對(duì)我來(lái)說(shuō)只是體力活,而自己想承擔(dān)一個(gè)完整的項(xiàng)目卻又不行),所以又重新拾起了Node.js,看起了ES6,思考設(shè)計(jì)和產(chǎn)品的問(wèn)題。
希望大家都能想清楚自己想做的,要成為的樣子。能自主地去學(xué)習(xí)。畢竟師傅帶進(jìn)門(mén),修行靠個(gè)人。我不想雞湯,大家各自走好,望來(lái)日可并肩一起,彼此說(shuō)一句“很高興遇見(jiàn)你”。
有效的學(xué)習(xí)android api的技巧
1、每節(jié)課程至少反復(fù)聽(tīng)三遍。
2、每節(jié)課都跟隨講師,把代碼敲出來(lái),并調(diào)試成功。
3、中間遇到代碼問(wèn)題,可通過(guò)項(xiàng)目經(jīng)理”或其他方式尋求答案,暫時(shí)解決不了的問(wèn)題記錄下來(lái),通過(guò)知識(shí)的積累一定會(huì)慢慢得到解決。
4、學(xué)習(xí)自己調(diào)試代碼的方法,從而自己找到代碼的問(wèn)題所在,不要過(guò)于依賴他人或放棄。
5、多看技術(shù)大咖分享的技術(shù)精華、多看技術(shù)牛人博客。
關(guān)于Android的一些問(wèn)答
1、如何區(qū)分JAVA和Android?
簡(jiǎn)單地說(shuō),一種是操作系統(tǒng),一種是開(kāi)發(fā)語(yǔ)言。
Android是一種基于Linux的開(kāi)放源碼操作系統(tǒng),主要用于便攜設(shè)備(智能手機(jī),平板電腦)。
Java是一種面向?qū)ο蟮木幊陶Z(yǔ)言,它的最大的特點(diǎn)就是開(kāi)源和免費(fèi),這因?yàn)槿绱?,中?guó)的大部分大型的軟件系統(tǒng)是用Java開(kāi)發(fā)的。
2、JAVA和Android有什么關(guān)系?
Android的應(yīng)用層上的應(yīng)用程序是用Java編寫(xiě)的,以Java作為開(kāi)發(fā)語(yǔ)言。但是,Java并不等同于Android,因?yàn)锳ndroid SDK引用了Java SDK的大部分,少數(shù)部分被Android SDK所拋棄。
所以,要想從事Android的開(kāi)發(fā),就必須有Java基礎(chǔ)。另外,在Windows系統(tǒng)中可以搭建Android的Java開(kāi)發(fā)環(huán)境,這樣就可以實(shí)現(xiàn)在Windows系統(tǒng)中測(cè)試Android項(xiàng)目了。
3、學(xué)Android好還是JAVA好?
很多小伙伴剛接觸學(xué)習(xí)編程語(yǔ)言都是零基礎(chǔ),迫切想知道哪個(gè)就業(yè)方向會(huì)更好? 學(xué)習(xí)難易程度怎樣?
Android是主流智能手機(jī)的操作系統(tǒng)、Java是一種開(kāi)發(fā)語(yǔ)言、兩者沒(méi)有好壞優(yōu)劣之分、只是兩種職業(yè)崗位的選擇。
學(xué)安卓從事移動(dòng)互聯(lián)方向開(kāi)發(fā)。
學(xué)Java從事軟件、網(wǎng)站開(kāi)發(fā)、而安卓上的應(yīng)用大多是Java編寫(xiě)的。
所以建議在安卓前期的Java學(xué)習(xí)階段中、要用心學(xué)好。
4、學(xué)了Android或JAVA,能互相轉(zhuǎn)崗嗎?
學(xué)Android或者Java,后期能不能互相轉(zhuǎn)崗,首先要搞清楚你要處在哪個(gè)行業(yè):互聯(lián)網(wǎng)?手機(jī)?企業(yè)軟件?軟件外包公司?游戲開(kāi)發(fā)行業(yè)?行業(yè)不同,使用的語(yǔ)言也不盡相同。
在開(kāi)發(fā)中,Android與Java的開(kāi)發(fā)環(huán)境都可以用Eclipse,但具體操作差異非常之大。
Android開(kāi)發(fā),Java只是基礎(chǔ),不僅Java基礎(chǔ)要好,還需要掌握XML,配置文件和數(shù)據(jù)的傳遞和返回等技術(shù),熟悉JSON的解析,開(kāi)發(fā)和調(diào)試工具的使用,多參考API[SDK]。
如果你學(xué)好了Java課程,后期轉(zhuǎn)型做Android開(kāi)發(fā)也是非常容易的,因?yàn)榫邆銳ava基礎(chǔ)。
Java和Android的前景都不錯(cuò),不過(guò)近幾年Android的發(fā)展要比Java好些,如果懂jJava的話,Android就很容易了,Android在很多地方和Java很類似,如果你確定要做Android的話,其實(shí)沒(méi)必要學(xué)Java在轉(zhuǎn)Android,可以直接學(xué)Android的,只是學(xué)了Java之后學(xué)Android比直接學(xué)android簡(jiǎn)單些。
猜你喜歡:
1.手機(jī)Android系統(tǒng)各個(gè)版本系統(tǒng)特性整理