android應用的構成
A. 到底Android核心應用是什麼
核心應用是系統運行的支持軟體,如果意外停止,您可以重啟手機。
Android應用程序沒有唯一的啟動入口(如C語言中的main()函數入口),一個Android應用程序是由多個不同的組件組合而成,組件之間通過Intent來實現通信。
Android系統的基本組件包括Activity,Service, BroadcastReceiver和ContentProvider等,此外還包括專門負責在基本組件之間傳遞消息的Intent組件。所有組件都必須在AndroidManifest.xml文件中聲明。
一、Activity —— 應用表示層( 基類 Activity )
一個活動表示一個可視化的用戶界面,關注一個用戶從事的事件。例如,一個活動可能表示一個用戶可選擇的菜單項列表,或者可能顯示照片連同它的標題。一個文本簡訊應用程序可能有一個活動,顯示聯系人的名單發送信息;第二個活動,寫信息給選定的聯系人;其他活動,重新查看舊信息或更改設置。雖然他們一起工作形成一個整體的用戶界面,但是每個活動是獨立於其他活動的。每一個都是作為Activity基類的一個子類的實現。
應用程序中的每個屏幕都是通過繼承和擴展基類 Activity 來實現的。
同一應用中的每個 Activity 是相互獨立的。程序啟動後顯示的第一幅畫面是應用程序的第一個 Activity (默認窗口),而後可以根據需要從這個 Activity 啟動另一個新的 Activity 。
Activity 利用 View 來實現應用中的 GUI (用戶直接通過 GUI 和應用程序做交互)。 Activity 窗口內的可見內容通過基類 View 提供。使用 Activity.setContentView() 方法設置當前 Activity 中的 View 對象。
二、Service —— 沒有可見的用戶界面,但能夠長時間運行於後台( 基類 Service )
一個服務沒有一個可視化用戶界面,而是在後台無期限地運行。例如一個服務可能是播放背景音樂而用戶做其他一些事情,或者它可能從網路擴取數據,或計算一些東西並提供結果給需要的活動(activities)。每個服務都繼承自Service基類。
運行於應用程序進程的主線程中,因此 Service 不會阻塞其他組件和用戶界面。
Service 是不能自己啟動的,必須通過 Context 對象(如一個 Activity )調用 startService 或 bindService 方法來啟動(用這兩種方法啟動的 Service 的生命周期不同)。
三、Broadcast Receiver —— 用戶接收廣播通知的組件( 基類 BroadcastReceiver )
一個廣播接收者是這樣一個組件,它不做什麼事,僅是接受廣播公告並作出相應的反應。許多廣播源自於系統代碼,例如公告時區的改變、電池電量低、已採取圖片、用戶改變了語言偏好。應用程序也可以發起廣播,例如為了他其他程序知道某些數據已經下載到設備且他們可以使用這些數據。一個應用程序可以有任意數量的廣播接收者去反應任何它認為重要的公告。所有的接受者繼承自BroadcastReceiver基類。
Android 中的廣播要麼來自於系統,要麼來自普通應用程序。
很多事件都可能導致系統廣播,如手機所在時區發生變化,電池電量低,用戶改變系統語言設置等。
四、Content Provider 為解決應用程序間數據通信、共享的問題(基類 ContentProvider )
內容提供者(content provider)使一個應用程序的指定數據集提供給其他應用程序。這些數據可以存儲在文件系統中、在一個SQLite資料庫、或以任何其他合理的方式。內容提供者繼承自ContentProvider 基類並實現了一個標準的方法集,使得其他應用程序可以檢索和存儲數據。然而,應用程序並不直接調用這些方法。相反,替代的是它們使用一個ContentResolver對象並調用它的方法。ContentResolver能與任何內容提供者通信,它與提供者合作來管理參與進來的進程間的通信。
在 Android 中,每個應用程序都是用自己的用戶 ID 並在自己的進程中運行。這樣的好處是,可以有效地保護系統及應用程序,避免被其他不正常德應用程序所影響,每個進程都擁有獨立的進程地址空間和虛擬空間。
一旦需要以上 4 種 Android 應用程序基本組件完成請求, Android 會首先確認該組件所在進程是否運行,如果沒有運行, Android 將先啟動進程,同時確認被請求組件的實例是否存在,否則將創建一個新的組件實例。
五、Intent —— 連接組件的紐帶
以上 4 種基本組件中,除了 Content Provider 是通過 Content Resolver 激活外,其他 3 種組件 Activity 、 Service 和 Broadcast Receiver 都是由 Intent 非同步消息激活的。
B. Android基礎技術及基本控制項
安卓基礎技術主要是講解一些安卓系統運行的原理,還有一些基本的組件,所有的安卓應用程序都是在這些組件構成的,基本控制項主要就是一些類似按鈕,進度條,滾動條這些圖形界面組件,還有一些是用戶自定義的組件。
C. android軟體開發的架構
Android以java為編程語言,使介面到功能,都有層出不窮的變化,其中Activity等同於J2ME的MIDlet,一個 Activity 類(class)負責創建視窗(window),一個活動中的Activity就是在 foreground(前景)模式,背景運行的程序叫做Service。兩者之間通過由ServiceConnection和AIDL連結,達到復數程序同時運行的效果。如果運行中的 Activity 全部畫面被其他 Activity 取代時,該 Activity 便被停止(stopped),甚至被系統清除(kill)。
View等同於J2ME的Displayable,程序人員可以通過 View 類與「XML layout」檔將UI放置在視窗上,Android 1.5的版本可以利用 View 打造出所謂的 Widgets,其實Widget只是View的一種,所以可以使用xml來設計layout,HTC的Android Hero手機即含有大量的widget。至於ViewGroup 是各種layout 的基礎抽象類(abstract class),ViewGroup之內還可以有ViewGroup。View的構造函數不需要在Activity中調用,但是Displayable的是必須的,在Activity 中,要通過findViewById()來從XML 中取得View,Android的View類的顯示很大程度上是從XML中讀取的。View 與事件(event)息息相關,兩者之間通過Listener 結合在一起,每一個View都可以注冊一個event listener,例如:當View要處理用戶觸碰(touch)的事件時,就要向Android框架注冊View.OnClickListener。另外還有Image等同於J2ME的BitMap。 在模擬器上運行模擬是虛擬設備(AVD),我們需要配置來運行我們的Android應用程序。步驟1、開放的AVD管理步驟2、新的按鈕,點擊添加新設備,並配置您的設備設置。步驟3、會有一個結果窗口顯示所有已配置你上一屏幕選擇。步驟4、按「確定」,你將會看到你的設備列在有你可以關閉此窗口。步驟5、運行你的Android應用程序項目從Eclipse,如果只有一個AVD配置,它會自動部署的應用程序也會出現一個窗口,選擇你的圖片。 模擬器將開始。在設備上運行
Android應用程序可以直接部署在Android設備上,這幾個配置所需要的。步驟1、在調試模式的設置可以設置應用程序:Android的<應用程序>元真可調試屬性。ADT 8這是默認的。步驟2、您的設備上啟用USB調試:Android 3.2或以上轉至設置>應用程序>開發和啟用USB調試。在Android 4更新,這是開發商選擇設置>。註:在Android 4.2更新,開發者選項是默認隱藏。可以,去設定>android的版本號。返回先前屏幕找到開發商選擇。步驟3、安裝USB驅動程序為您的設備,計算機識別你的設備。步驟4、一旦設置和您的設備通過USB連接,從Eclipse菜單欄安裝您的應用程序在設備上選擇運行>運行(或運行>調試)。 操作系統與應用程序的溝通橋梁,並用分為兩層:函數層(Library)和虛擬機(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同時包含了Webkit,所謂的Webkit 就是Apple Safari瀏覽器背後的引擎。Surface flinger 是就2D或3D的內容顯示到屏幕上。Android使用工具鏈(Toolchain)為Google自製的Bionic Libc。
Android採用OpenCORE作為基礎多媒體框架。OpenCORE可分7大塊:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。
Android 使用skia 為核心圖形引擎,搭配OpenGL/ES。skia與linux Cairo功能相當,但相較於Linux Cairo, skia 功能還只是陽春型的。2005年Skia公司被Google收購,2007年初,Skia GL源碼被公開,Skia 也是Google Chrome 的圖形引擎。
Android的多媒體資料庫採用SQLite資料庫系統。資料庫又分為共用資料庫及私用資料庫。用戶可通過ContentResolver類(Column)取得共用資料庫。
Android的中間層多以Java 實現,並且採用特殊的Dalvik虛擬機(Dalvik Virtual Machine)。Dalvik虛擬機是一種「暫存器型態」(Register Based)的Java虛擬機,變數皆存放於暫存器中,虛擬機的指令相對減少。
Dalvik虛擬機可以有多個實例(instance), 每個Android應用程序都用一個自屬的Dalvik虛擬機來運行,讓系統在運行程序時可達到優化。Dalvik虛擬機並非運行Java位元組碼(Bytecode),而是運行一種稱為.dex格式的文件。 Android 的 HAL(硬體抽像層)是能以封閉源碼形式提供硬體驅動模塊。HAL 的目的是為了把 Android framework 與 Linux kernel 隔開,讓 Android 不至過度依賴 Linux kernel,以達成 kernel independent 的概念,也讓 Android framework 的開發能在不考慮驅動程序實現的前提下進行發展。
HAL stub 是一種代理人(proxy)的概念,stub 是以 *.so 檔的形式存在。Stub 向 HAL「提供」操作函數(operations),並由 Android runtime 向 HAL 取得 stub 的 operations,再 callback 這些操作函數。HAL 里包含了許多的 stub(代理人)。Runtime 只要說明「類型」,即 mole ID,就可以取得操作函數。 Android 是運行於 Linux kernel之上,但並不是GNU/Linux。因為在一般GNU/Linux 里支持的功能,Android 大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 為了達到商業應用,必須移除被GNU GPL授權證所約束的部份,例如Android將驅動程序移到 userspace,使得Linux driver 與 Linux kernel徹底分開。bionic/libc/kernel/ 並非標準的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所產生的,這樣做是為了保留常數、數據結構與宏。
Android 的 Linux kernel控制包括安全(Security),存儲器管理(Memory Managemeat),程序管理(Process Management),網路堆棧(Network Stack),驅動程序模型(Driver Model)等。下載Android源碼之前,先要安裝其構建工具Repo來初始化源碼。Repo 是 Android 用來輔助Git工作的一個工具。
D. 簡述android應用程序結構是哪些
Android 採用分層的架構,分為四層,從高層到底層分為應用程序層,應用程序框
架層,系統運行庫層和Linux核心層
1,Android應用程序層
2,應用程序框架層
3,系統運行庫層
4,Linux核心層
詳細的請上網搜索android四層框架
E. Android應用程序開發的內容簡介
Android介紹
Android 有豐富的功能,因此很容易與桌面操作系統混淆。Android 是一個分層的環境,構建在 Linux 內核的基礎上,它包括豐富的功能。
Android應用程序作用
提供多種連接選項,包括 WiFi、藍牙和通過蜂窩(cellular)連接的無線數據傳輸(例如 GPRS、EDGE 和 3G)。
提供對基於位置的服務(例如GPS)和加速計的支持,不過並不是所有的 Android 設備都配備了必需的硬體,另外還有攝像、地圖支持。
提供對 2D 和 3D 圖形的內置支持,包括 OpenGL庫,解決了圖形方面的挑戰。
所需工具
開始開發 Android 應用程序的最簡捷的方式是下載 Android SDK 和 Eclipse IDE。
可以在 Microsoft®、 Windows®、Mac OS X 或 Linux 上進行。
Android應用程序是用 Java 語言編寫的,但是是在 Dalvik VM(非 Java 虛擬機)中編譯和執行的。
F. 簡述android應用程序結構是哪些
android應用程序結構是:
linux
kernel(linux內核)、libraries(系統運行庫或者是c/c++核心庫)、application
framework(開發框架包)、applications
(核心應用程序)
G. 安卓程序是用什麼語言編寫的
Android以Java為編程語言,使介面到功能,都有層出不窮的變化,其中Activity等同於J2ME的MIDlet,一個 Activity 類(class)負責創建視窗(window),一個活動中的Activity就是在 foreground(前景)模式,背景運行的程序叫做Service。
兩者之間通過由ServiceConnection和AIDL連結,達到復數程序同時運行的效果。如果運行中的 Activity 全部畫面被其他 Activity 取代時,該 Activity 便被停止(stopped),甚至被系統清除(kill)。
(7)android應用的構成擴展閱讀
Android應用程序是android系統智能手機的主要構成部分,實現了智能手機的多樣性、多功能性,結合了辦公功能、娛樂功能、生活實用功能等,廣受人們的喜愛。
Android應用程序有很多,其中讓人耳目一新的個性化實用性應用程序有:
MINT、CHROME、神奇阿萊西、SWYPE/SWiftKey鍵盤、SWYPE/SWiftKey鍵盤、Swype、POCKET閱讀器、SNAPSEED、EYE IN THE SKY天氣、FLICK NOTE、LIGHT FLOW、ANY.DO。
H. android應用程序的基本組件有哪些
Android有四大組件:Activity、Service、Broadcast Receiver、Content Provider
在這些組件之間的通訊中,主要是由Intent協助完成的.
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中的描述,執行相應的操作.
如果您認可我的答案,請點擊下面的「選為滿意回答」按鈕,
I. Android軟體框架結構自可分為哪些層
開發一個程序,android的系統框架是層層相扣,不能分開的。
應用程序層:
這個層主要指的就是用java語言編寫的運行在虛擬機上的程序,Google在最開始時就 在android系統中捆綁了一些核心的應用(核心應用的編寫必須使用應用層序框架層的API框架),例如你android手機中SMS發送短消息的程序,通訊錄等等。
應用程序框架層:
指的就是開發時所需要的API框架,開發人員是在遵守該框架的原則上,調用他們的,開發自己所需要的程序。
系統運行庫層:
用於支持應用框架層的各個組件的。就是說當開發人員使用android應用框架層時,android系統會通過一些C/C++庫來支持對我們使用的各個組件,使其能更好地為開發者服務。
linux核心層:
android的核心系統服務如安全性、內存管理、進程管理、網路協議棧和驅動模型等都依賴於Linux2.6內核,Linux內核同時也作為硬體和軟體棧之間的抽象層。
因此,你開發的程序是運行在應用程序層,開發中寫代碼調用的包,是基於應用框架層,而在應用框架中的各個組件是需要系統運行庫的支持的,例如,你要登陸查看的信息就必須訪問到SQLite資料庫,SQLite就位於系統運行庫,再有,你登入要輸入信息,肯定需要鍵盤驅動的支持,而各種驅動是依賴Linux內核的。
J. android應用工程文件結構有哪些
在Eclipse中,一個基本的Android項目的目錄結構如圖所示。
1. src目錄--程序文件
在裡面保存了程序員辛辛苦苦直接編寫的程序文件。和一般的Java項目一樣,src目錄下保存的是項目的所有包及源文件(.java),res目錄下包含了項目中的所有資源。例如,程序圖標(drawable)、布局文件(layout)和常量(values)等。不同的是,在Java項目中沒有gen目錄,也沒有每個Android項目都必須有的AndroidManifest.xml文件。
.java格式的文件是在建立項目時自動生成的,這個文件是只讀模式,不能更改。R.java文件是定義該項目所有資源的索引文件。
2. AndroidManifest.xml文件--設置文件
AndroidManifest.xml是一個控制文件,在裡麵包含了該項目中所使用的Activity、Service、Receiver