分享一下我老師大神的人工智能教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實作我們中華民族偉大複興!
本系列是閱讀《Pro Android4》的讀書筆記,也包括網絡閱讀資料的整理,以及個人心得。
由于智能手機引入AP(應用處理器),Android在某種意義上是個人計算機,具有桌面計算機的完整架構,采用Linux-based OS stack來管理裝置、記憶體和程序。Android的Java庫覆寫電話,視訊、連接配接、圖形、UI程式設計等多個方面。Android SDK支援幾乎全部的J2SE,除去UI的AWT和Swing部分,而用Android UI framework取而代之。
Android針對手持裝置的受限記憶體、處理器速度和電池能力進行優化Dalvik VM。Dalvik VM将所生成的Java calss檔案封裝到一個或多個Dalvik執行性檔案(.dex)。最終在Android執行的代碼,并不是Java Byte code,而是.dex檔案。也就是你不能直接運作Java Byte code,需要轉為.dex檔案。
應用開發者的Android架構視圖
從應用開發者角度看Android軟體stack。
LinuxKernel處理裝置驅動、資源通路、電源管理以及其他的OS工作。(Wei:我覺得這不準确,因為Android有改動,特别是HAL,且Linux社群沒有接納Android的貢獻。)
在核心之上是C/C++庫,如OPenGL,WebKit,FreeType(字型處理),SSL,libc,SQLit、Meida。Bionic是Android基于BSD的Glibc,針對嵌入系統進行改良的libc版本,大小約為原來的一半。媒體庫是基于PacketVideo的OpenCore,用于錄制和播放音頻及視訊格式。Surface管理器處理系統顯示,支援2D和3D。Android采用Skia作為2D圖形庫,采用OpenGL ES來支援3D。
絕大部分的應用架構是通過DalvikVM來通路核心庫。Dalvik VM運作多個VM執行個體。當Java應用通路核心庫時,每個應用獲得它自己的VM instance。(Wiki:Dalvik虛拟機器可以有多個執行個體,每個Android應用程式都用一個自屬的Dalvik虛拟機器來執行,讓系統在執行程式時可達到優化。Dalvik虛拟機器并非執行Java位元組碼,而是執行一種稱為.dex格式的檔案)
Android Java庫就是Android标準架構圖中的應用架構層,包括電話、資源,位置、UI、内容提供者、和包管理器。開發者在這些API上進行應用開發。有些應用已經內建到系統上,如Home,聯系人,電話,和浏覽器。
通過Android SDK開發應用
Android模拟器。Android模拟器能支援90%的應用開發,但在USB連接配接、攝影和視訊捕獲,電池模拟,藍牙,耳機,Wi-Fi,NFC和OpenGL ES上有限制。Android采用QEMU技術,是開源的“處理器模拟器”,允許一個OS模拟器在另一個OS上運作。(Wei:MeeGo的模拟器也是采用QEMU,此外還需要KVM,最大的問題是KVM虛拟化需要硬體的支援,即CPU必須支援VT,但不是所有桌面機的CPU都能支援,特别手提的CPU)
Android UI。Android UI可以用XML腳本檔案來定制UI應用的視窗,通過ID來擷取在Java代碼中進行控制。而螢幕或視窗在Android中稱為activity。View是Android基礎的UI機關,可組合為view group。View内部使用cavase,painting和使用者互動這些熟悉概念。在Android 3.0引入新UI概念fragment,目的是在大螢幕(平闆)上處理多窗格,而fragment提供窗格的抽象。Android架構的一個關鍵概念是activity視窗的生命周期管理。
基礎元件。Android的UI架構引入新概念intent。Intent是一個程序内和程序間喚醒元件的機制。作為元件就是一段有明确生命周期的代碼,如activity、service,由事件喚起的receiver,都是元件。要調起元件,intent具有視窗消息,action,釋出和訂購模式,以及程序間通信。
Android對資源支援很直覺,支援string,bitmaps以及XML-basedView定義。自動生成檔案R.java就是對資源的描述,每個自動生成的ID都對應在XML檔案中元素或整個XML檔案。開發者可通過這些ID使用這些XML定義。這對于處理本地語言環境、裝置大小适配等非常有幫助。
另一個新概念是content provider,資料源的抽象。
先進UI概念。Android引入很多先進的UI概念。包括采用XML方式來描述layout和menu,異步dialog(注意,不是Windows中MFC的同步方式的modal dialog),對動畫的支援,包括frame-by-frame動畫,視覺轉換的漸變方式(放大、縮小,位移,旋轉、角度)。Android通過OpenGL ES支援3D圖形。OpenGL ES是C庫,Android沿用了J2ME中對Open ES定義的API,具體可以參考ProAndroid 3。
在HomeUI方面。Android支援live floder(是一種小型的應用層插件。它本身展現為桌面出現的圖示,通過點選這些圖示,将出現一個清單框,清單框中将顯示資料資訊。通過活動目錄可以在不打開應用程式的情況下,在桌面就能檢視其中的資料資訊。[1])。但是随着對home screen widget的支援,livefloder的作用漸微。Android還提供Integrated Search,可以搜尋裝置和網絡的資訊,提供searchAPI。
此外還有自定義的手勢、傳感器控制、動态配置(如根據橫豎屏進行的排版),平闆的actionbar,Drag-and-drop(Android 4.0中可用于phone和pad)等。
上面的這一些大都會在《Pro Android 4》後面章節中較長的描述。
其他。此外還有Service元件,Media元件、Telephony元件,具體可以詳細閱讀Android SDK reference對package的說明。Android通過應用的AndroidManifest.xml檔案來展現這些概念,包括activities的定義、service和contentprovider的注冊,許可聲明等等。
目前Andriod有超過50個包和過千個class。除了andriod.*外,還包括java.*,javax.*,以及其他,如org.apache.http,org.json, org.w3c.com,org.xml.sax, org.xml.sax.ext, org.xml.sax.helpers, org.xmlpull.v1, and org.xmlpull.v1.sax2開頭的namespace包。
從Android開源代碼中獲益
Android源代碼教程在http://source.android.com。Git在https://android.googlesource.com/,但目前不支援線上閱讀,必須git下來。線上閱讀可在http://www.oschina.net/code/explore/android-4.0.1。或者更為完整的,更便于閱讀的,可通路http://www.grepcode.com/search/?query=google+android&entity=project。
相關連結: 我的Android開發相關文章