Android 學習深入之路(應用層)

風和先行發表於2017-05-02
本人根據個人經驗和同事討論得出的一些看法,本著由淺入深,循循漸進的原則,陳述下Android學習的流程和要掌握的知識點。供Android 應用層和Framework層初學者以及初級工程師做相關參考。如有不對之處,敬請指出。

-------------------

總結:

先概括總結下,我目前把相關知識主要分如下5塊。

  1. 常用基本知識;
  2. 常用架構;
  3. 效能優化方法;
  4. ANR處理方法;
  5. 設計模式。

----------------------------------------

詳細說明:

下文是逐步要掌握的內容,排列順序大致代表了學習順序,也是面試中較常遇到的問題。

基本的知識

  1. android四大元件:activity, broadcastReceiver, service,content Provider.
  2. Activity 生命週期,Activity間資料傳輸以及activity四種啟動模式。
  3. 常見佈局方式:linearLayout,相對佈局,幀佈局,表格佈局,絕對佈局。
  4.  螢幕適配常用方法:
          a. 善用wrap_content,weight.
          b. 使用相對佈局,
          c. 使用large等尺寸限定符,
          d. .9.png自動拉伸圖。
  5. service啟動方式和用途,傾向於後臺執行操作。startService或bindService(呼叫者退出,服務也會停止)。
  6. 五種資料儲存方式:sharePreference,檔案儲存(FileInputStream,大量資料,如文字,圖片,音訊),SQLite, ContentProvider(共享資料),網路儲存。
  7. listview 優化方法:
          a. 在getView函式中的引數有個convertView用此物件來複用view;
          b.  重新建一個靜態內部類,裡面的元件和view中的一致,讓view中的元件隨著view的複用而複用;
          c. 分批載入和分頁。
  8. 程式和執行緒區別,通訊方式等。  
    a. 執行緒間通訊:
              i. 共享記憶體(變數);
              ii. 檔案和資料庫;
              iii. handler;
              iv. java中的wait, notify。
      b. 程式間通訊(利用四大元件,服務即是AIDL)。
  9. 幀動畫,補間動畫以及屬性動畫的差別。
  10. 定時器實現方式:   a. TimerTask,
          b. handler:
          c. AlarmManager:
  11. Handler 和 MessageQueue,handler 優化方案。
  12. 程式重要程度:前臺,可視,服務,後臺,空程式。

在瞭解了上面所說的這些東西后,基本上就瞭解了Android的基本知識點,對於應用層的需求基本可以通過拼湊程式碼實現了。這也是培訓機構最容易做到的事情,但是在做一段時間後,必然會有一個從追求功能實現到開發效率的追求到效能優化的過程轉變,同時也會碰到寫問題需要你對底層程式碼流程和邏輯有所涉獵。


常用框架

Android 發展到現在可以說已經有很多成熟的框架了,利用這些框架可以大大節省我們的時間,這點對應用開發人員會有所幫助。

  1. Android 快速開發開源框架:http://blog.csdn.net/feiduclear_up/article/details/42740989。這幾種框架大多封裝了與網路,資料庫,圖片處理相關類
  2. Android常用網路框架:https://segmentfault.com/a/1190000008629146。

效能優化

關於效能優化,包括以下四點(可參考:https://www.kancloud.cn/kancloud/android-performance/53237):

      a. 渲染(佈局);避免重複繪製,繪製時只繪製需要繪製的地方。
      b. 運算:
      c. 記憶體;
          i. 產生原因和優化方法;
          ii. 分析工具: mat, LeakCanary;
      d. 電量;

另外記憶體溢位和記憶體洩漏之間的關係也要有所瞭解。


ANR

程式稍微複雜,開幾個執行緒就容易碰到ANR問題,ANR三種型別:
      a. 按鍵或觸控事件超時(5s,主要型別)
      b. 廣播10s內未處理;
      c. 服務20s內(小概率型別)

至於怎麼處理,我現在也只是半吊子,真是尷尬啊!。。


設計模式

從設計程式碼和閱讀他人程式碼的角度上,設計出通俗易懂,易於修改的程式碼是非常重要的,這對於後期維護來說是件大有裨益的事情。另外瞭解一些常見的設計模式(如單例模式、觀察者模式……)對我們閱讀他人程式碼也會很有幫助。再次推薦大家閱讀《Head first設計模式》。


至於其他的東西多多益善,大家可以通過檢視相關崗位招聘要求有針對的去深入瞭解。

相關文章