編輯:Android開發實例
前言
本章內容為開發者指南(Dev Guide)/Android Basics/What is Android?,版本為Android3.0 r1,翻譯轉載並整理自:"gansc23",再次感謝"gansc23" !
原文
http://developer.android.com/guide/basics/what-is-android.html
Android是什麼? (What is Android?)
Android是一個針對於移動設備的軟件棧,它包括操作系統,中間件和關鍵應用程序。Android SDK提供了在Android平台使用Java編程語言進行開發應用程序的必要的工具和API。
特性(Features)
* 應用程序框架(Application framework) 可重用並可替換的組件
* Dalvik虛擬機(Dalvik virtual machine) 為移動設備而優化
* 集成浏覽器(Integrated browser) 基於開源的WebKit引擎
* 優化的圖形處理(Optimized graphics) 以定制的2D圖形庫和基於OpenGLES 1.0規范的3D圖形(可選的硬件加速)為基礎
* SQLite結構化數據存儲
* 媒體支持(Media support) 通用音頻、視頻,還有圖像格式(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
* GSM電話(GSM Telephony) (依賴硬件)
* 藍牙(Bluetooth), EDGE, 3G, and WiFi (依賴硬件)
* 照相機,GPS,指南針,加速感應器(Camera, GPS, compass, and accelerometer) (依賴硬件)
* 豐富的開發環境(Rich development environment) 包括設備模擬器,調試工具,內存和性能分析工具和用於Eclipse IDE的插件
Android架構(Android Architecture)
下圖展示了Android操作系統的主要組件。每個組件在下面有更詳細的描述。
應用程序(Applications)
Android將配備一系列核心應用程序,包括電子郵件客戶端,短信程序,日歷,地圖,浏覽器,通訊錄等。所有的應用程序都是使用Java編程語言。
應用框架(Application Framework)
通過提供一個開放的開發平台,Android提供給開發者建立極其豐富和創新應用的能力。開發者自由地享有硬件設備的優勢,訪問本地信息,運行後台服務,設置警示,向狀態欄添加通知等。
開發人員可以使用和核心應用程序使用的完全相同的API框架。應用程序架構的設計的目的是為了簡化組件的重用;任何應用程序都可以發布它的功能,其他的應用程序可能會利用到這些功能(需遵守框架提供的安全約束)。依靠同樣的機制,組件可以被用戶所取代。
底層的所有的應用程序是一組服務和子系統,包括:
* 一組豐富並且可擴展的view,這組view可以被用來構建一個應用程序,包括列表,表格,文本框,按鈕,甚至可嵌入的Web浏覽器。
* 一組Content Providers,可以使應用程序訪問其它應用程序的數據(比如通訊錄),或者共享自己的數據。
* 一個資源管理器(Resource Manager),提供對非代碼資源的訪問,比如本地化的字符串,圖形和布局文件。
* 一個通知管理(Notification Manager
),可以使所有的應用程序在狀態欄顯示定制的提醒。
* 一個Activity管理(Activity Manager
),它管理的應用程序的生命周期,並且提供了一個通用的後台切換棧。
如需了解一個應用程序的詳細信息和具體示例,請參考Notepad代碼示例(Notepad Tutorial)。
庫(Libraries)
Android包括了一套C/C++庫,這套庫被Android系統的各個組件使用。通過Android的應用框架,這些功能被開放給開發者。其中的一些核心庫如下:
* 系統C庫(System C library) - 一個繼承自BSD的標准C系統實現(libc),被調整成面向基於linux的嵌入式設備。
* 媒體庫(Media Libraries) - 基於PacketVideo的的OpenCore;該庫支持回放和錄制許多流行的音頻和視頻格式,以及靜態圖像文件,包括MPEG4,H.264,MP3,AAC,AMR,JPG和PNG格式。
* Surface管理器(Surface Manager) - 管理顯示子系統,並能無縫地組合多個應用的2D和3D圖像層。
* LibWebCore - 一個流行的Web浏覽器引擎,它對Android浏覽器和嵌入式Web視圖具有良好的支持。
* SGL - 底層的2D圖形引擎。
* FreeType - 位圖和矢量字體渲染。
* SQLite - 所有的應用程序使用並且強大而輕量級的關系型數據庫引擎。
運行時(Android Runtime)
Android包括一個核心庫的集合,她們提供了Java編程語言的核心庫中的絕大多數功能。
每一個Android應用都在她自己的進程中運行,該進程也屬於某個Dalvik虛擬機的實例。Dalvik被設計成能讓設備高效地運行多個虛擬機。 Dalvik虛擬機執行的是.dex結尾的Dalvik可執行文件格式,該格式被優化為最小內存使用。虛擬機是基於寄存器的,並且運行那些Java編程語 言所編譯的類,這些類被內置的dx工具轉換為.dex格式。
Dalvik虛擬機依賴Linux內核來提供底層的功能,比如線程和低級內存管理。
Linux內核(Linux Kernel)
Android依賴Linux 2.6來提供核心系統服務,比如安全、存儲管理、進程管理、網絡棧和驅動模型。該內核同時扮演著介於硬件和軟件棧的其余部分之間的一個抽象層。
本人小菜一個。目前只見過兩種彈出框的實現方式,第一種是最常見的PopupWindow,第二種也就是Activity的方式是前幾天才見識過。感覺很霸氣哦。沒想到,a
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
作為Android應用開發者,不得不面對一個尴尬的局面,就是自己辛辛苦苦開發的應用可以被別人很輕易的就反編譯出來。Google似乎也發現了這個問題,從SDK2.3
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我