心得分享:關於對Android的理解,知識點梳理

來源:互聯網
上載者:User

標籤:

前言

       寫這篇文章是為了和大家描述下我對Android的理解,同時會講述下我後面的技術規劃,希望能夠對大家有點參考價值。大家都想學好Android,那麼怎麼才能學好呢?這個真不好說,但是我可以和大家交流下我自己的心得,當然僅限應用程式層開發,因為我本身是側重應用程式層開發的。

知識的分類

       Android中有很多知識點,雖然說大部分知識點都不難,但是量很多,這就會給人一種很瑣碎的感覺。在這種情況下就要對知識進行分類,我對Android知識的分類為: 
1. 基本知識點 
      比如四大組件如何使用、如何建立Service、如何進行布局等。這類知識是需要熟練掌握的。 
2. 稍微深入的知識點 
比如AIDL、Binder、多進程、View的繪製流程、事件分發、訊息佇列等。這類知識對於進階開發人員來說也是必須掌握的。 
3. 基本知識點的細節 
比如Activity的啟動模式和標記位、Service同時處於start和bind狀態時的停止問題、AsyncTask的同步非同步問題以及使用時的限制等,這種問題還有很多。這類知識點,大家在開發過程中可以並不會去注意,這會導致一個問題,那就是開發應用沒問題,但是在面試時面試官只要稍微問下細節或者特殊情況,就hold不住了。 
4. 系統核心機制 
比如主線程的訊息迴圈、主線程如何和AMS如何跨進程互動、SystemServer進程中的各種Service的工作方式。這類知識對於進階開發人員也是建議掌握的,因為它們可以讓開發人員理解Android的運行體系。 
5. 瑣碎的知識點 
此類知識點我把它們定義為一些重要但是沒有什麼技術難度的問題,比如如何開啟一個網頁、如何打電話、如何發簡訊、如何定位、多點觸控等,這類問題往往不好記憶,但是需要的時候去查一下就能立馬搞定。

類別 描述 開發人員所需層級
基本知識點 熟練掌握 初中級
深入知識點 熟練掌握 中進階
基本知識點的細節 掌握 進階
系統核心機制 熟悉、掌握 進階、資深
瑣碎的知識點 瞭解 所有層級
如何學習

關於Android知識點的學習,無非就是看書、看官方文檔,寫代碼等,這個是需要投入時間的。大家比較容易困惑的就是看Android源碼,覺得“看不懂”,這是可以理解的。看源碼的時候我們要側重對流程的把握,剛開始時不要糾結太多的代碼細節。有時候一遍看不懂的話就多看幾遍,這樣慢慢的就有眼熟了,眼熟後就能看懂了。另外看源碼要講究切入點,源碼那麼多從哪裡開始下手呢?其實我建議先找一些自己感興趣的切入點,比如大家有沒有想過“Activity啟動時,Activity的對象時在什麼時候建立的?”這個問題,因為Java時物件導向的語言,所以Activity必須要建立一個對象,帶著這個疑問去分析,一步步揭開謎團也是很有意思的事情。針對上面這個問題如何去分析Activity的對象到底是何時建立的呢,其實很簡單,沿著Context的startActivity方法跟下去就好。採用這種方式去看源碼,當看了一些主題後就會有一種貫穿的感覺,而這種感覺其實就是知識體系,這個知識體系是建立在Android的整體之上的。但是,不建議大家上去就看C層的源碼,可等對源碼有一定理解後再去看。關於瑣碎的知識點,建議大家不好花費太多時間在上面,沒有太大意義。

要知其所以然

在學習過程中,我們還要有質疑的精神。很多知識點我們掌握了,但是為什麼是這樣的,這個問題可能很多人並沒有去想過。比如RemoteViews只支援有限的系統View,但是為什麼呢?有沒有想過?如果大家去想這個問題,那麼就可以更好地理解RemoteViews的本質。再比如AsyncTask要求第一次訪問這個類必須在UI線程,這一點我想大家都知道,但是為什麼必須這樣的?如果第一次訪問AsyncTask在子線程會怎麼樣呢?帶著這些疑問去思考去探索,那麼你的技術檔次就會更上一層樓。

我的技術規劃

就我目前來說,我還有很多東西不太會,不管是Android還是其他技術。對於Android來說,源碼我還需要更深入地看下去,同時我還需要去進一步學習Linux shell指令碼以及Linux的內部實現,這樣可以進一步地理解Android的實現,IOS我也需要稍微瞭解下,這樣能夠擴寬我的知識面,畢竟IOS也屬於移動開發,但是我不會發很多精力去研究IOS,事實證明,“什麼都擅長就等於什麼都不擅長”,一個人要成為全棧工程師真的非常非常難,而且國內的招聘很多不需要全棧工程師,而且所謂的全棧工程師很可能在面試中就被淘汰(由於深度不夠的原因)。我還會學習一些編譯環境的搭建,比如Gradle、Gerrit等。

按照這種規划去學習,我在Android就會達到一定深度並且有了Linux核心知識的支撐,然後瞭解IOS開發,同時還能搭建環境啥的,至於C、C++、Web開發之類的知識點,我在學校時就有初步的瞭解,這樣一來,知識的廣度和深度我都有,我認為應該是不錯的規劃。當然,有些安卓代碼為了避免被他人反編譯,所以進行了代碼混淆。因為很多不法分子盜版一款安卓應用就是從反編譯開始。所以從行動裝置 App安全形度講,為了避免他人瞭解自己的安卓應用的布局和邏輯,的確應該做一些反編譯的保護措施,尤其是避免被競爭者看到。如果開發人員不想被他人反編譯,提高APK的安全性,可以使用愛加密(http://www.ijiami.cn)進行加密保護。我也做過測試,使用愛加密後,原有的代碼程式都被隱藏了,沒法再看到原始碼。

參考文章:http://blog.csdn.net/singwhatiwanna/article/details/46810527

心得分享:關於對Android的理解,知識點梳理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.