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

本人根據個人經驗和同事討論得出的一些看法,本着由淺入深,循循漸進的原則,陳述下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設計模式》。


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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章