當前位置:首頁 » 安卓系統 » 安卓的程序結構是什麼

安卓的程序結構是什麼

發布時間: 2024-11-27 10:28:29

㈠ 安卓應用開發常用的android開發框架有哪些

android應用開發框架是 Application Framework. 其系統架構由5部分組成,分別是:linux Kernel、Android Runtime、Libraries、Application Framework、Applications。第二部分將詳細介紹這5個部分。下面自底向上分析各層。

Android架構

1、Linux Kernel

Android基於Linux 2.6提供核心系統服務,例如:安全、內存管理、進程管理、網路堆棧、驅動模型。Linux Kernel也作為硬體和軟體之間的抽象層,它隱藏具體硬體細節而為上層提供統一的服務。 如果你學過計算機網路知道OSI/RM,就會知道分層的好處就是使用下層提供的服務而為上層提供統一的服務,屏蔽本層及以下層的差異,當本層及以下層發生了變化不會影響到上層。也就是說各層各盡其職,各層提供固定的SAP(Service Access Point),專業點可以說是高內聚、低耦合。 如果你只是做應用開發,就不需要深入了解Linux Kernel層。

2、Android Runtime

Android包含一個核心庫的集合,提供大部分在Java編程語言核心類庫中可用的功能。每一個Android應用程序是Dalvik虛擬機中的實例,運行在他們自己的進程中。Dalvik虛擬機設計成,在一個設備可以高效地運行多個虛擬機。Dalvik虛擬機可執行文件格式是.dex,dex格式是專為Dalvik設計的一種壓縮格式,適合內存和處理器速度有限的系統。 大多數虛擬機包括JVM都是基於棧的,而Dalvik虛擬機則是基於寄存器的。兩種架構各有優劣,一般而言,基於棧的機器需要更多指令,而基於寄存器的機器指令更大。dx 是一套工具,可以將 Java .class 轉換成 .dex 格式。一個dex文件通常會有多個.class。由於dex有時必須進行最佳化,會使文件大小增加1-4倍,以ODEX結尾。 Dalvik虛擬機依賴於Linux 內核提供基本功能,如線程和底層內存管理。

3、Libraries

Android包含一個C/C++庫的集合,供Android系統的各個組件使用。這些功能通過Android的應用程序框架(application framework)暴露給開發者。下面列出一些核心庫: 系統C庫--標准C系統庫(libc)的BSD衍生,調整為基於嵌入式Linux設備 媒體庫--基於PacketVideo的OpenCORE。這些庫支持播放和錄制許多流行的音頻和視頻格式,以及靜態圖像文件,包括MPEG4、 H.264、 MP3、 AAC、 AMR、JPG、 PNG 界面管理--管理訪問顯示子系統和無縫組合多個應用程序的二維和三維圖形層 LibWebCore--新式的Web瀏覽器引擎,驅動Android 瀏覽器和內嵌的web視圖 SGL--基本的2D圖形引擎 3D庫--基於OpenGL ES 1.0 APIs的實現。庫使用硬體3D加速或包含高度優化的3D軟體光柵 FreeType --點陣圖和矢量字體渲染 SQLite --所有應用程序都可以使用的強大而輕量級的關系資料庫引擎

4、Application Framework

通過提供開放的開發平台,Android使開發者能夠編制極其豐富和新穎的應用程序。開發者可以自由地利用設備硬體優勢、訪問位置信息、運行後台服務、設置鬧鍾、向狀態欄添加通知等等,很多很多。 開發者可以完全使用核心應用程序所使用的框架APIs。應用程序的體系結構旨在簡化組件的重用 ,任何應用程序都能發布他的功能且任何其他應用程序可以使用這些功能(需要服從框架執行的安全限制)。這一機制允許用戶替換組件。 所有的應用程序其實是一組服務和系統,包括: 視圖(View)--豐富的、可擴展的視圖集合,可用於構建一個應用程序。包括包括列表、網格、文本框、按鈕,甚至是內嵌的網頁瀏覽器 內容提供者(Content Providers)--使應用程序能訪問其他應用程序(如通訊錄)的數據,或共享自己的數據 資源管理器(Resource Manager)--提供訪問非代碼資源,如本地化字元串、圖形和布局文件 通知管理器(Notification Manager)--使所有的應用程序能夠在狀態欄顯示自定義警告 活動管理器(Activity Manager)--管理應用程序生命周期,提供通用的導航回退功能

5、Applications

Android裝配一個核心應用程序集合,包括電子郵件客戶端、SMS程序、日歷、地圖、瀏覽器、聯系人和其他設置。所有應用程序都是用Java編程語言寫的。更加豐富的應用程序有待我們去開發! 從上面我們知道Android的架構是分層的,非常清晰,分工很明確。Android本身是一套軟體堆迭(Software Stack),或稱為「軟體迭層架構」,迭層主要分成三層:操作系統、中間件、應用程序。從上面我們也看到了開源的力量,一個個熟悉的開源軟體在這里貢獻了自己的一份力量。

㈡ 怎麼退出安卓系統觸屏手機的後台程序

1、首先點擊多任務鍵,上劃後台程序,即可關閉後台程序。

(2)安卓的程序結構是什麼擴展閱讀

系統架構

Android的系統架構和其操作系統一樣,採用了分層的架構。從架構圖看,Android分為四個層,從高層到低層分別是應用程序層、應用程序框架層、系統運行庫層和Linux內核層。

1、應用程序

Android會同一系列核心應用程序包一起發布,該應用程序包包括客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯系人管理程序等。所有的應用程序都是使用JAVA語言編寫的。

2、應用程序框架

開發人員也可以完全訪問核心應用程序所使用的API框架。該應用程序的架構設計簡化了組件的重用;任何一個應用程序都可以發布它的功能塊並且任何其它的應用程序都可以使用其所發布的功能塊(不過得遵循框架的安全性)。同樣,該應用程序重用機制也使用戶可以方便的替換程序組件。

3、隱藏在每個應用後面的是一系列的服務和系統, 其中包括;

(1)豐富而又可擴展的視圖(Views),可以用來構建應用程序, 它包括列表(Lists),網格(Grids),文本框(Text boxes),按鈕(Buttons), 甚至可嵌入的web瀏覽器。

(2)內容提供器(Content Providers)使得應用程序可以訪問另一個應用程序的數據(如聯系人資料庫), 或者共享它們自己的數據

(3)資源管理器(Resource Manager)提供 非代碼資源的訪問,如本地字元串,圖形,和布局文件(Layout files )。

(4)通知管理器 (Notification Manager) 使得應用程序可以在狀態欄中顯示自定義的提示信息。

(5)活動管理器( Activity Manager) 用來管理應用程序生命周期並提供常用的導航回退功能。

4、系統運行庫

Android 包含一些C/C++庫,這些庫能被Android系統中不同的組件使用。它們通過 Android 應用程序框架為開發者提供服務。以下是一些核心庫:

(1)系統 C 庫 - 一個從BSD繼承來的標准C系統函數庫 Libc ), 它是專門為基於Embedded linux的設備定製的。

(2) 媒體庫 - 基於PacketVideo OpenCORE;該庫支持多種常用的音頻、視頻格式回放和錄制,同時支持靜態圖像文件。編碼格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。

(3)Surface Manager - 對顯示子系統的管理,並且為多個應用程序提 供了2D和3D圖層的無縫融合。

㈢ 什麼是android系統,android的發展以及android的平台架構和特性

Android平台採用了整合的策略思想,包括底層Linux操作系統、中間層的中間件和上層的Java應用程序。下面我把Android的特性及其架構體系結構總結一下。

一、Android的平台特性

Android平台有如下特性:

1. 應用程序框架支持組件的重用與替換。

這樣我們可以把系統中不喜歡的應用程序刪除,安裝我們喜歡的應用程序。

2. Dalvik虛擬機專門為移動設備進行了優化。

Android應用程序將由Java編寫、編譯的類文件通過DX工具轉換成一種後綴名為.dex的文件來執行。Dalvik虛擬機是基於寄存器的,相對於Java虛擬機速度要快很多。

3. 內部集成瀏覽器基於開源的WebKit引擎。

有了內置的瀏覽器,這將意味著WAP應用的時代即將結束,真正的移動互聯網時代已經來臨,手機就是一台「小電腦」,可以在網上隨意遨遊。

4. 優化的圖形庫包括2D和3D圖形庫,3D圖形庫基於OpenGL ES 1.0。

強大的圖形庫給游戲開發帶來福音。在3G最為重要的的應用莫過於手機上網和手機游戲。

5. SQLite用作結構化的數據存儲

6. 多媒體支持包括常見的音頻、視頻和靜態印象文件格式

如MPEG4、H.264、MP3、AAC、AMR、JGP、PNG、GIF。

7. GSM電話(依賴於硬體)。

8. 藍牙(Bluetooth)、EDGE、3G、WiFi(依賴於硬體)。

9. 照相機、GPS、指南針和加速度計(依賴於硬體)。

10. 豐富的開發環境包括設備模擬器、調試工具、內存及性能分析圖表和Eclipse集成的開發環境插件。

Google提供了Android開發包SDK,其中包含了大量的類庫和開發工具,並且針對Eclipse的可視化開發插件ADT。

二、Android平台架構

從上圖我們可以看出,Android操作系統的體系結構可分為4層,由上到下依次是應用程序、應用程序框架、核心類庫和Linux內核,其中第三層還包括Android運行時的環境。下面分別來講解各個部分。

1. 程序應用

Android
連同一個核心應用程序包一起發布,該應用程序包包括E-mail客戶端、SMS短消息程序、日歷、地圖、瀏覽器、聯系人管理程序等。所有的應用程序都是用Java編寫的。

2. 應用程序框架

開發者完全可以訪問核心應用程序所使用的API框架。該應用程序框架架構用來簡化組件軟體的重用,任何一個應用程序都可以發布它的功能塊並且任何其他的應用程序都可以使用其所發布的功能塊(不過得遵循框架的安全性限制)。該應用程序重用機制使得組件可以被用戶替換。

以下所有的應用程序都由一系列的服務和系統組成,包括:

1)一個可擴展的視圖(Views)可以用來創建應用程序,包括列表(lists)、網路(grids)、文本框(text
boxes)、按鈕(buttons),甚至是一個可嵌入的Web瀏覽器。

2)內容管理器(Content Providers)使得應用程序可以訪問另一個應用程序的數據(如聯系人資料庫),或者共享它們自己的數據。

3)一個資源管理器(Resource Manager)提供非代碼資源的訪問,如本地字元串、圖形和分層文件(layout files)。

4)一個通知管理器(Notification Manager)使得應用程序可以在狀態欄中顯示客戶通知信息。

5)一個活動類管理器(Activity Manager)用來管理應用程序生命周期並提供常用的導航回退功能。

3. Android程序庫

Android包括一個被Android系統中各種不同組件所使用的C/C++集庫。該庫通過Android應用程序框架為開發者提供服務。

以下是一些主要的核心庫:

1)系統C庫:一個從BSD繼承來的標准C系統函數庫(libc),專門為基於Embedded Linux的設備定製。

2)媒體庫:基於PacketVideo
OpenCORE;該庫支持錄放,並且可以錄制許多流行的音頻視頻格式,還有靜態映像文件包括MPEG4、H.264、MP3、AAC、JPG、PNG。

3)Surface Manager:對顯示子系統的管理,並且為多個應用程序提供2D和3D圖層的無縫融合。

4)LibWebCore:一個最新的Web瀏覽器引擎,用來支持Android瀏覽器和一個可嵌入的Web視圖。

5)SGL:一個內置的2D圖形引擎。

6)3D libraries:基於OpenGL ES 1.0 APIs實現;該庫可以使用硬體3D加速(如果可用)或者使用高度優化的3D軟加速。

7)FreeType:點陣圖(bitmap)和向量(vector)字體顯示。

8)SQLite:一個對於所以應用程序可用、功能強勁的輕型關系型資料庫引擎。

4. Android運行庫

Android包括了一個核心庫,該核心庫提供了Java編程語言核心庫的大多數功能。

每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。Dalvik是針對同時高效地運行多個VMs實現的。Dalvik虛擬機執行.dex的Dalvik可執行文件,該格式文件針對最小內存使用做了優化。該虛擬機是基於寄存器的,所有的類都是經由Java匯編器編譯,然後通過SDK中的DX工具轉化成.dex格式由虛擬機執行。

Dalvik虛擬機依賴於Linux的一些功能,比如線程機制和底層內存管理機制。

5. Linux內核

Android的核心系統服務依賴於Linux內核,如安全性、內存管理、進程管理、網路協議棧和驅動模型。Linux內核也同時作為硬體和軟體棧之間的硬體抽象層。

㈣ 安卓系統是用什麼語言編的

安卓系統的編程語言,C/C++(底層) Java等(應用層)。

1、Android是一種基於Linux的自由及開放源代碼的操作系統。主要使用於移動設備,如智能坦鄭手機和平板電腦,由Google(谷歌)公司和開放手機聯盟領導及開發。

2、尚未有統一中文名稱,中國大陸地區較多人使用「安卓」或「安致」。Android操作系統最初由Andy Rubin開發,主要支持手機。

(4)安卓的程序結構是什麼擴展閱讀:

1、Android在運行一個程序時首先需要UnZip,然後類似Symbian那樣直接執行安裝,和Windows Mobile中的PE文件有區別。

2、這樣做對於程序的保密性和可靠性不是很高,通過dexmp命令可啟信激以反編譯,但這樣做符合發展規律,微軟的 Windows Gadgets或者說WPF也採用了這種構架方式。

3、悄襪在Android平台中dalvik vm的執行文件被打包為apk格式,最終運行時載入器會解壓然後獲取編譯後androidmanifest.xml文件中的permission分支相關的安全訪問,但仍然存在很多安全限制,如果你將apk文件傳到/system/app文件夾下會發現執行是不受限制的。

4、最終我們平時安裝的文件可能不是這個文件夾,而在android rom中系統的apk文件默認會放入這個文件夾,它們擁有著root許可權。

安卓手機的工作原理是什麼

android基於Linux內核,很多系統也都基於Linux內核。但是android的特別之處除了開發上的特點以外,還有一個就是程序在運行時的行為和以往我接觸到的程序運行機制有很大不同。在傳統PC機或者其他一些手機上,用戶對應用程序有絕對的掌控權,在應用程序的系統菜單上選擇「退出」或者「關閉」之類的選項會直接殺死進程,而在android系統中不是這樣的。在android中,應用程序的生命周期並不是由應用程序自身直接控制的,而是由系統,當系統需要釋放內存來運行新進程或者保證某些後台進程和前端進程順利執行的時候才會釋放相應應用程序的資源,這個釋放過程有一個重要性的層次。
android中進程的層次如下(重要性由高到低):

1、前端進程。顧名思義,前端進程就是目前顯示在屏幕上和用戶交互的進程,在系統中前端進程數量很少,而這種進程是對用戶體驗的影響最大,只有系統的內存稀少到不足以維持和用戶的基本交互時才會銷毀前端進程。因此這種進程重要性是最高的。

2、可見進程。可見進程也擁有一個可視化的界面,只是目前不是最上層界面(最上層界面在前端進程裡面),可見進程一般調用了OnPause(),可見進程比前端進程重要性低,但是在交互方面影響還是很大,因為用戶可能隨時切換過去,所以系統不會輕易銷毀它。

3、服務進程。一個服務進程就是一個Service,它調用了startService,就是UNIX中說的守護進程,對用戶不可見,但是保證了一些重要的事件被監聽或者維持著某些狀態,比如網路數據傳輸、後台音樂播放,這類進程在內存不足且為了保證前端交互的順利進行的時候被銷毀。

4、後台進程。這里叫後台進程可能會和一般意義上的後台進程混淆,要說明的是,android里的後台進程是調用了OnStop()的,可以理解成用戶暫時沒有和這個進程交互的願望,所以這里後台進程有點「待銷毀」的意思。

5、空進程。這是一種系統緩存機制,其實就是個進程的外殼,當有新進程創建的時候,這個空進程可以加快進程創建速度,當系統內存不足的時候,首先銷毀空進程。
android中進程重要性層次

㈥ 安卓系統是由什麼組成的

一般來說Android 程序主要由下列四個部分組成,分別是:活動(Activity) - 用於表現功能服務(Service) - 相當於後台運行的Activity廣播接收器(BroadcastReceiver) - 用於接收廣播意圖(Intent)- 用於連接以上各個組件,並在其間傳遞消息
1 Activity 介紹
Android 中,Activity 是所有程序的根本,所有程序的流程都運行在Activity 之中,Activity可以算是開發者遇到的最頻繁,也是Android 當中最基本的模塊之一。在Android的程序當中,Activity 一般代表手機屏幕的一屏。如果把手機比作一個瀏覽器,那麼Acitivity就相當於一個網頁。在Activity 當中可以添加一些Button、Check box 等控制項。可以看到Activity 的概念和網頁的概念相當類似。 一般一個Android 應用是由多個Activity 組成的。這多個Activity 之間可以進行相互跳轉,例如,按下一個Button 按鈕後,可能會跳轉到其他的Activity。和網頁跳轉稍微有些不一樣的是,Activity 之間的跳轉有可能返回值,例如,從Activity A 跳轉到Activity B,那麼當Activity B 運行結束的時候,有可能會給Activity A 一個返回值。這樣做在很多時候是相當方便的。 當打開一個新的屏幕時,之前一個屏幕會被置為暫停狀態,並且壓入歷史堆棧中。用戶可以通過回退操作返回到以前打開過的屏幕。我們可以選擇性的移除一些沒有必要保留的屏幕,因為Android 會把每個應用的開始到當前的每一個屏幕保存在堆棧中。Activity 是由Android 系統進行維護的,它也有自己的生命周期,即它的一個產生、運行、銷毀的一個周期,對於Activity,關鍵是其生命周期的把握,其次就是狀態的保存和恢復(onSaveInstanceState onRestoreInstanceState),以及Activity 之間的跳轉和數據傳輸(intent)。
2 Service 介紹
Service 是android 系統中的一種組件,它跟Activity 的級別差不多,但是他不能自己運行,只能後台運行,並且可以和其他組件進行交互。Service 是沒有界面的長生命周期的代碼。Service 是一種程序,它可以運行很長的時間,但是它卻沒有用戶界面。這么說有點枯燥,我們來看個例子。打開一個音樂播放器的程序,這個時候若想上網了,那麼,我們打開Android 的瀏覽器,這個時候雖然我們已經進入了瀏覽器這個程序,但是,歌曲的播放並沒有停止,而是在後台繼續一首接著一首的播放。其實這個播放就是由播放音樂的Service進行控制。當然這個播放音樂的Service也可以停止,例如,當播放列表裡邊的歌曲都結束,或者用戶按下了停止音樂播放的快捷鍵等。service 可以在和多場合的應用中使用,比如播放多媒體的時候用戶啟動了其他Activity這個時候程序要在後台繼續播放,比如檢測SD 卡上文件的變化,再或者在後台記錄你地理信息位置的改變等等,總之服務嘛,總是藏在後頭的。
3 BroadcastReceiver 介紹
在Android 中,Broadcast 是一種廣泛運用的在應用程序之間傳輸信息的機制。而BroadcastReceiver 是對發送出來的Broadcast進行過濾接受並響應的一類組件。可以使用BroadcastReceiver 來讓應用對一個外部的事件做出響應。這是非常有意思的,例如,當電話呼入這個外部事件到來的時候,可以利用BroadcastReceiver 進行處理。例如,當下載一個程序成功完成的時候,仍然可以利用BroadcastReceiver 進行處理。BroadcastReceiver不能生成UI,也就是說對於用戶來說不是透明的,用戶是看不到的。BroadcastReceiver通過NotificationManager 來通知用戶這些事情發生了。BroadcastReceiver 既可以在AndroidManifest.xml 中注冊,也可以在運行時的代碼中使用Context.registerReceiver()進行注冊。只要是注冊了,當事件來臨的時候,即使程序沒有啟動,系統也在需要的時候啟動程序。各種應用還可以通過使用Context.sendBroadcast () 將它們自己的intent broadcasts廣播給其他應用程序。注冊BroadcastReceiver有兩種方式:
4 Intent 介紹
Intent 是一個將要執行的動作的抽象的描述,一般來說是作為參數來使用,由Intent來協助完成android 各個組件之間的通訊。Intent 負責對應用中一次操作的動作、動作涉及數據、附加數據進行描述,Android 則根據此Intent 的描述,負責找到對應的組件,將Intent 傳遞給調用的組件,並完成組件的調用。因此,Intent 在這里起著一個媒體中介的作用,專門提供組件互相調用的相關信息,實現調用者與被調用者之間的解耦。例如,在一個聯系人維護的應用中,當我們在一個聯系人列表屏幕(假設對應的Activity 為listActivity)上,點擊某個聯系人後,希望能夠跳出此聯系人的詳細信息屏幕(假設對應的Activity為detailActivity)。為了實現這個目的,listActivity需要構造一個Intent,這個Intent 用於告訴系統,我們要做"查看"動作,此動作對應的查看對象是"某聯系人",然後調用startActivity(Intent intent),將構造的Intent 傳入,系統會根據此Intent 中的描述,到ManiFest中找到滿足此Intent 要求的Activity,系統會調用找到的Activity,即為detailActivity,最終傳入Intent,detailActivity 則會根據此Intent中的描述,執行相應的操作。Intent 主要是用來啟動其他的activity 或者service,所以可以將intent 理解成activity 之間的粘合劑。Intent具體有一下3 種形式: 通過startActivity 方法來啟動一個新的Activity; 通過broadcast Intent 機制可以將一個Intent 發送給任何對這個Intent 感興趣的BroadcastReceiver; 通過startService (Intent) 或bindService(Intent,ServiceConnection,int) 來和後台的Service 進行交互。[

熱點內容
ftp端路徑 發布:2024-11-27 12:51:13 瀏覽:981
無法刪除訪問被拒絕請確定磁碟未滿 發布:2024-11-27 12:51:08 瀏覽:73
編程貓和你 發布:2024-11-27 12:49:33 瀏覽:232
2016郵件伺服器搭建 發布:2024-11-27 12:45:15 瀏覽:927
pythonstrptime 發布:2024-11-27 12:34:50 瀏覽:954
怎麼判斷組裝電腦配置真假 發布:2024-11-27 12:30:18 瀏覽:379
周鴻禕編程 發布:2024-11-27 12:30:12 瀏覽:615
索賠的腳本 發布:2024-11-27 12:30:09 瀏覽:547
什麼是淘寶資料庫 發布:2024-11-27 12:30:08 瀏覽:373
聯系輔導員重設密碼需要什麼 發布:2024-11-27 12:19:16 瀏覽:510