自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android應用程序開發(fā)基礎(chǔ):Application組件

移動開發(fā) Android
Android的核心功能之一就是一個應用程序可以使用其它應用程序的元素。本文介紹了一些有關(guān)Android應用程序開發(fā)的基礎(chǔ)知識。

Android應用程序開發(fā)簡介

Android應用程序用Java做為開發(fā)語言。aapt工具把編譯后的Java代碼連同其它應用程序需要的數(shù)據(jù)和資源文件一起打包到一個Android文件包中,這個文件使用.apk做為擴展名,它是發(fā)布應用程序并安裝到移動設(shè)備的媒介,用戶只需下載并安裝此文件到他們的設(shè)備即可。單個.apk文件中的所有代碼被看作是一個應用程序。

從很多方面來看,每個Android應用程序都存在于它自己的世界之中:

◆默認情況下,每個應用程序均運行于它自己的Linux進程中。當任一應用程序開始執(zhí)行時,Android啟動一個進程,而當應用程序不再需要此進程而其它應用程序又需要系統(tǒng)資源時,則關(guān)閉這個進程。

◆每個進程都運行于自己的Java虛擬機(VM)中。所以應用程序代碼實際上與其它應用程序的代碼是隔離的。

◆默認情況下,每個應用程序均被賦予一個唯一的Linux用戶ID,并加以權(quán)限設(shè)置,使得那個應用程序的文件僅對這個用戶、這個應用程序可見。當然,也有其它的方法使得這些文件同樣能被別的應用程序所訪問。

可以讓兩個應用程序共有同一個用戶ID,這種情況下他們可以看到彼此的文件。為了保護系統(tǒng)資源,擁有同一個ID的應用程序?qū)⑦\行在同一個Linux進程,以及同一個虛擬機之中。

Android應用程序開發(fā)的核心:Application組件

Android的核心功能之一就是一個應用程序可以使用其它應用程序的元素(如果那個應用程序允許的話)。比如說,如果你的應用程序需要一個圖片滾動列表,而另一個應用程序已經(jīng)開發(fā)了一個合適、而且又允許別人使用的相同列表,可以直接調(diào)用那個滾動列表來實現(xiàn)功能,而不用自己再開發(fā)一個。而應用程序并沒有包含或鏈接其它應用程序的代碼,它只是在需要時啟用了其它應用程序的那部分功能而已。

為達到這個目的,系統(tǒng)必須在一個應用程序的一部分需要時啟動這個應用程序,并將那部分的Java對象實例化。與其它系統(tǒng)上的應用程序不同,Android應用程序沒有為應用程序提供單獨的程序入口(比如說,沒有main()方法), 相反,而是提供了一些核心組件,系統(tǒng)可以在需要時實例化,運行這些組件。共有四種組件類型:

Activity(活動)

Activity是為響應用戶操作而展示的可視化用戶界面。比如說,一個Activity可以展示一個菜單項列表供用戶選擇,或者顯示一些包含說明的照片。一個短消息應用程序可以包括一個用于顯示做為發(fā)送對象的聯(lián)系人列表的Activity,一個給選定的聯(lián)系人寫短信的Activity以及翻閱以前的短信和改變設(shè)置的Activity。盡管它們一起寫作完成了一個完整的用戶界面,但每個Activity都與其它的Activity保持獨立。都是通過以Activity類為基類的子類實現(xiàn)。

一個應用程序可以只有一個Activity,或者,如剛才提到的短信應用程序那樣包含多個。每個Activity的作用,以及其數(shù)目,自然取決于應用程序及其設(shè)計。通常,其中一個Activity被標記啟動Activity,用戶在應用程序啟動的時候首先看到該Activity的內(nèi)容。用當前Activity啟動一個新的Activity即可轉(zhuǎn)向其他的Activity。

每個Activity都被給予一個默認的窗口以進行繪制。通常,這個窗口是滿屏的,但它也可以是一個小的位于其它窗口之上的浮動窗口。Activity也可以使用額外的窗口——比如,在Activity運行過程中彈出一個需用戶反應的小對話框,或是當用戶選擇了屏幕上特定項目后彈出的重要信息窗口。

窗口顯示的可視內(nèi)容是由一系列視圖構(gòu)成的,這些視圖均繼承自View基類。每個視圖均控制著窗口中一塊特定的矩形空間。父級視圖包含并組織它的子視圖的布局。葉節(jié)點視圖(位于視圖層次***端)在它們控制的矩形中進行繪制,并對用戶對其實施的操作做出響應。所以,視圖是Activity與用戶進行交互的界面。比如說,視圖可以顯示一個小圖片,并在用戶指點它的時候產(chǎn)生行為。Android有很多既定的視圖供用戶直接使用,包括按鈕、文本域、滾動條、菜單項、復選框等等。

視圖及其層次是由Activity.setContentView()方法放入Activity的窗口之中。內(nèi)容視圖(Content View)是位于視圖層次根位置的視圖對象。(參考用戶界面章節(jié)的內(nèi)容獲取關(guān)于視圖及其層次的更多信息。)

Service(服務(wù))

服務(wù)沒有可視化的用戶界面,而是在一段時間內(nèi)在后臺運行。比如說,一個服務(wù)可以在用戶做其它事情的時候在后臺播放背景音樂、從網(wǎng)絡(luò)獲取一些數(shù)據(jù)或者計算一些東西并提供給需要這個運算結(jié)果的Activity使用。每個服務(wù)都繼承自Service基類。

媒體播放器播放播放列表中的曲目是一個不錯的例子。播放器應用程序可能有一個或多個Activity來給用戶選擇歌曲并進行播放。然而,音樂播放這個任務(wù)本身不應該為任何Activity所處理,因為用戶期望在他們離開播放器應用程序而開始做別的事情時,音樂仍在繼續(xù)播放。為達到這個目的,媒體播放器Activity應該啟用一個運行于后臺的服務(wù)。而系統(tǒng)將在這個Activity不再顯示在屏幕之后,仍維持音樂播放服務(wù)的運行。我們可以連接(綁定)至一個正在運行的服務(wù)(如果服務(wù)沒有運行,則啟動)。連接之后,可以通過那個服務(wù)暴露出來的接口與服務(wù)進行通訊。對于音樂服務(wù)來說,這個接口可以允許用戶暫停、回退、停止以及重新開始播放。

如同Activity和其它組件一樣,服務(wù)運行于應用程序進程的主線程內(nèi)。所以它不會對其它組件或用戶界面有任何干擾,它們一般會派生一個新線程來進行一些耗時任務(wù)(比如音樂回放)。參見下述進程和線程。

Broadcast(廣播接收器)

廣播接收器是一個專注于接收廣播通知信息,并做出對應處理的組件。很多廣播是源自于系統(tǒng)代碼——比如,通知時區(qū)改變、電池電量低、拍攝了一張照片或者用戶改變了語言選項。應用程序也可以進行廣播——比如說,通知其它應用程序一些數(shù)據(jù)下載完成并處于可用狀態(tài)。

應用程序可以擁有任意數(shù)量的廣播接收器以對其所有感興趣的通知信息予以響應。所有的接收器均繼承自BroadcastReceiver基類。

廣播接收器本身不顯示用戶界面。但它可以啟動一個Activity來響應收到的信息,或者用NotificationManager來通知用戶。通知可以用很多種方式來吸引用戶的注意力──閃動背燈、震動、播放聲音等等。一般來說是在狀態(tài)欄上放一個持久(Persistent)的圖標,用戶可以打開它并獲取消息。

ContentProvider(內(nèi)容提供者)

內(nèi)容提供者將一些特定的應用程序數(shù)據(jù)提供給其它應用程序使用。數(shù)據(jù)可以存儲于文件系統(tǒng)、SQLite數(shù)據(jù)庫或其它方式。內(nèi)容提供者繼承于ContentProvider 基類,為其它應用程序讀取和存儲它管理的數(shù)據(jù)實現(xiàn)了一套標準方法。然而,應用程序并不直接調(diào)用這些方法,而是使用一個 ContentResolver 對象,調(diào)用它的方法。ContentResolver可以與任意的內(nèi)容提供者進行會話,與Provider合作來管理其涉及的所有相關(guān)交互通訊。

每當出現(xiàn)一個需要被特定組件處理的請求時,Android會確保那個組件的應用程序進程處于運行狀態(tài),或在必要的時候啟動它。并確保那個相應組件的實例存在,必要時會創(chuàng)建那個實例。

以上就介紹了Android應用程序開發(fā)的一些基礎(chǔ)。本文來自賴儀靈的博客:《Android SDK 1.5中文版 (Application基礎(chǔ)—1)》。

【編輯推薦】

  1. Windows Mobile與Android應用開發(fā)對比
  2. ExtJS在Android模擬器上的運行效果
  3. Google推出新編程語言Simple 用于Android開發(fā)
  4. 中移動發(fā)布OPhone SDK 基于Android技術(shù)
  5. 谷歌Android 2.0有望今年夏末前發(fā)布
責任編輯:yangsai 來源: 賴儀靈的博客
相關(guān)推薦

2013-01-17 15:51:42

Android開發(fā)應用程序組件

2011-05-31 13:34:22

應用開發(fā)iPad

2010-02-06 15:26:11

Android應用程序

2010-05-22 16:57:09

BlackBerry開

2013-01-11 15:06:13

iOS開發(fā)移動應用iPhone

2011-05-24 16:09:57

Androi

2011-02-22 14:42:52

AndroidPad

2014-05-27 14:16:08

AndroidActivitysingleTask

2014-05-27 15:07:07

AndroidActivitysingleTask

2014-05-27 15:11:20

AndroidActivitysingleTask

2014-05-27 15:17:46

AndroidActivitysingleTask

2014-05-27 14:28:25

AndroidActivitysingleTask

2014-05-27 14:44:26

AndroidActivitysingleTask

2014-05-27 14:12:49

AndroidActivitysingleTask

2014-05-27 14:09:52

AndroidActivitysingleTask

2014-05-27 15:04:15

AndroidActivitysingleTask

2014-05-27 15:09:13

AndroidActivitysingleTask

2014-05-27 14:59:24

AndroidActivitysingleTask

2014-05-27 14:33:37

AndroidActivitysingleTask

2022-09-27 15:16:42

開發(fā)Android應用程序
點贊
收藏

51CTO技術(shù)棧公眾號