1. 程式人生 > >Android開發學習(1)基本概念

Android開發學習(1)基本概念

移動裝置的火爆,不用過多筆墨,我們已經處於移動辦公的時代,未來pc生存的空間,可能越來越小,對於移動應用開發的學習,顯得越來越迫在眉睫,憑藉著這幾年的積累,經驗,預計應該容易理解和入門些。

入門一個語言,時刻不忘恩師的教誨,任何事情,在做之前,要想到,這不是一個孤立的事件,必然和自身以前的事件有千絲萬縷的聯絡,有了這些聯絡,我們在接受一個所謂意義上“新事件”的時候,先要“同化”,找到相同點,然後在實行【N+1】原則,循序漸進積累不同點,最後讓這個事件在思維導圖中和千千萬萬個其他事件產生聯絡,那麼“新事件”就轉化成了“老事件”。

架構

學習安卓,畢竟興奮的一個特大號共同點【Java】,安卓是java語言開發,這個省略了很多新語言熟悉學習的過程。二安卓的架構也足夠簡單清晰,幫助我們更快速的進行熟悉和了解:

Android其本質就是在標準的Linux系統上增加了Java虛擬機器Dalvik,並在Dalvik虛擬機器上搭建了一個JAVA的application framework,所有的應用程式都是基於JAVA的application framework之上。
Android主要應用於ARM平臺,但不僅限於ARM;

這裡寫圖片描述

從上圖中可以看出,Android系統架構為四層結構,從上層到下層分別是應用程式層、應用程式框架層、系統執行庫層以及Linux核心層,分別介紹如下:

應用程式層

Android平臺不僅僅是作業系統,也包含了許多應用程式,諸如SMS簡訊客戶端程式、電話撥號程式、圖片瀏覽器、Web瀏覽器等應用程式。這些應用程式都是用Java語言編寫的,並且這些應用程式都是可以被開發人員開發的其他應用程式所替換,這點不同於其他手機作業系統固化在系統內部的系統軟體,更加靈活和個性化。
對比java-web:類似於我們的web介面以及我們自己寫的程式碼。

應用程式框架層

  • Activity Manager(活動管理器)
    管理各個應用程式生命週期以及通常的導航回退功能
  • Window Manager(視窗管理器)
    管理所有的視窗程式
  • Content Provider(內容提供器)
    使得不同應用程式之間存取或者分享資料
  • View System(檢視系統)
    構建應用程式的基本元件
  • Notification Manager(通告管理器)
    使得應用程式可以在狀態列中顯示自定義的提示資訊
    -Package Manager(包管理器)
    Android系統內的程式管理
  • Telephony Manager(電話管理器)
    管理所有的移動裝置功能
  • Resource Manager(資源管理器)
    提供應用程式使用的各種非程式碼資源,如本地化字串、圖片、佈局檔案、顏色檔案等
  • Location Manager(位置管理器)
    提供位置服務
  • XMPP Service(XMPP服務)
    提供Google Talk服務

對比java-web:類似於框架提供的各種服務,spring,quartz等。

系統執行庫層

從圖中可以看出,系統執行庫層可以分成兩部分,分別是系統庫和Android執行時,分別介紹如下:

  • 系統庫
    系統庫是應用程式框架的支撐,是連線應用程式框架層與Linux核心層的重要紐帶。其主要分為如下幾個:
    • Surface Manager:
      執行多個應用程式時候,負責管理顯示與存取操作間的互動,另外也負責2D繪圖與3D繪圖進行顯示合成。
    • Media Framework:
      多媒體庫,基於PacketVideo OpenCore;支援多種常用的音訊、視訊格式錄製和回放,編碼格式包括MPEG4、MP3、H.264、AAC、ARM。
    • SQLite:
      小型的關係型資料庫引擎
    • OpenGL|ES:
      根據OpenGL ES 1.0API標準實現的3D繪圖函式庫
    • FreeType:
      提供點陣字與向量字的描繪與顯示
    • WebKit:
      一套網頁瀏覽器的軟體引擎
    • SGL:
      底層的2D圖形渲染引擎
    • SSL:
      在Andorid上通訊過程中實現握手
    • Libc:
      從BSD繼承來的標準C系統函式庫,專門為基於embedded linux的裝置定製
  • Android執行時
    Android應用程式時採用Java語言編寫,程式在Android執行時中執行,其執行時分為核心庫和Dalvik虛擬機器兩部分。
    • 核心庫
      核心庫提供了Java語言API中的大多數功能,同時也包含了Android的一些核心API,如android.os、android.net、android.media等等。
    • Dalvik虛擬機器
      Android程式不同於J2me程式,每個Android應用程式都有一個專有的程序,並且不是多個程式執行在一個虛擬機器中,而是每個Android程式都有一 個Dalivik虛擬機器的例項,並在該例項中執行。Dalvik虛擬機器是一種基於暫存器的Java虛擬機器,而不是傳統的基於棧的虛擬機器,並進行了記憶體資源使用的優化 以及支援多個虛擬機器的特點。需要注意的是,不同於J2me,Android程式在虛擬機器中執行的並非編譯後的位元組碼,而是通過轉換工具dx將Java位元組碼轉成dex格式的中間碼。

對比java-web:類似於src.jar以及其他我們應用的jdk框架。

Linux核心層

Android是基於Linux2.6核心,其核心繫統服務如安全性、記憶體管理、程序管理、網路協議以及驅動模型都依賴於Linux核心。
對比java-web:類似於war包執行的linux系統

總結:

在安卓開發的過程中,初期我們更多接觸的是應用層的開發,其他的都是呼叫關係,也就是“黑箱子”,這就大大減少了開發的難度,得力於java程式設計師的人數優勢,安卓應用市場的豐富就自然是這個結果,本篇文章先介紹這麼多,下騙我們開始構建我們自己的開發環境。