精通android體系架構、mvc、常見的設計模式、控制反轉(ioc)


  1、請看某個著名的it公司一則招聘信息的其中一條要求:“熟悉android系統架構及相關技術,1年以上實際android平台開發經驗;”,里面非常明確的說道要求熟練android系統架構,這從某種程度上說明了對android體系架構的理解的重要性。

  linux kernel:負責硬件的驅動程序、網絡、電源、系統安全以及內存管理等功能。

  libraries和android runtime:libraries:即c/c++函數庫部分,大多數都是開放源代碼的函數庫,例如webkit,該函數庫負責android網頁瀏覽器的運行,例如標准的c函數庫libc、openssl、sqlite等,當然也包括支持游戲開發2dsgl和3dopengles,在多媒體方面有mediaframework框架來支持各種影音和圖形文件的播放與顯示,例如mpeg4、h.264、mp3、aac、amr、jpg和png等眾多的多媒體文件格式。android的runtime負責解釋和執行生成的dalvik格式的字節碼

  applicationframework(應用軟件架構),java應用程序開發人員主要是使用該層封裝好的api進行快速開發。

  applications:該層是java的應用程序層,android內置的googlemaps、e-mail、即時通信工具、瀏覽器、mp3播放器等處於該層,java開發人員開發的程序也處於該層,而且和內置的應用程序具有平等的位置,可以調用內置的應用程序,也可以替換內置的應用程序。

  上面的四個層次,下層為上層服務,上層需要下層的支持,調用下層的服務,這種嚴格分層的方式帶來的極大的穩定性、靈活性和可擴展性,使得不同層的開發人員可以按照規范專心特定層的開發。

  android應用程序使用框架的api並在框架下運行,這就帶來了程序開發的高度一致性,另一方面也告訴我們,要想寫出優質高效的程序就必須對整個application framework進行非常深入的理解。精通application framework,你就可以真正的理解android的設計和運行機制,也就更能夠駕馭整個應用層的開發。

  2、android的官方建議應用程序的開發采用mvc模式。何謂mvc?先看看下圖

  mvc是model,view,controller的縮寫,從上圖可以看出mvc包含三個部分:

  l模型(model)對象:是應用程序的主體部分,所有的業務邏輯都應該寫在該層。

  l視圖(view)對象:是應用程序中負責生成用戶界面的部分。也是在整個mvc架構中用戶唯一可以看到的一層,接收用戶的輸入,顯示處理結果。

  l控制器(control)對象:是根據用戶的輸入,控制用戶界面數據顯示及更新model對象狀態的部分,控制器更重要的一種導航功能,想用用戶出發的相關事件,交給m哦得了處理。

  android鼓勵弱耦合和組件的重用,在android中mvc的具體體現如下:

  1)視圖層(view):一般采用xml文件進行界面的描述,使用的時候可以非常方便的引入,當然,如何你對android了解的比較的多了話,就一定可以想到在android中也可以使用javascript+html等的方式作為view層,當然這里需要進行java和javascript之間的通信,幸運的是,android提供了它們之間非常方便的通信實現。

  2)控制層(controller):android的控制層的重任通常落在了眾多的acitvity的肩上,這句話也就暗含了不要在acitivity中寫代碼,要通過activity交割model業務邏輯層處理,這樣做的另外一個原因是android中的acitivity的響應時間是5s,如果耗時的操作放在這里,程序就很容易被回收掉。

  3)模型層(model):對數據庫的操作、對網絡等的操作都應該在model里面處理,當然對業務計算等操作也是必須放在的該層的。


  3、設計模式和ioc(控制反轉)

  毫無疑問,android的之所以能夠成為一個開放的氣象萬千的系統,與設計模式的精妙應用是分不開的,只要你稍微用心觀察,就會發現在android中到處都是設計模式或者設計模式的聯合運用,以下的設計模式是您想游刃有余的駕馭android必須掌握的:

  template method模式

  factory method模式

  observer模式

  abstract factory模式

  adapter模式

  composite模式

  strategy模式

  state模式

  proxy模式

  bridge模式

  iterator模式

  mediator模式

  android框架魅力的源泉在於ioc,在開發android的過程中你會時刻感受到ioc帶來的巨大方便,就拿activity來說,下面的函數是框架調用自動調用的:

  protectedvoidoncreate(bundlesavedinstancestate);

  不是程序編寫者主動去調用,反而是用戶寫的代碼被框架調用,這也就反轉了!當然ioc本身的內涵遠遠不止這些,但是從這個例子中也可以窺視出ioc帶來的巨大好處。此類的例子在android隨處可見,例如說數據庫的管理類,例如說android中sax的handler的調用等。有時候,您甚至需要自己編寫簡單的ioc實現,上面展示的多線程現在就是一個說明。

 

轉自:http://www.apkbus.com/forum.php?mod=viewthread&tid=18538


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM