www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀] 在初見 Intent一章中,我們已嘗試過使用 「startActivity」函式,傳入適當?shù)摹窱ntent」,來呼叫瀏覽器的 Activity。到目前為止,我們可以由學習 Android 應用程式的經(jīng)驗中

 在初見 Intent一章中,我們已嘗試過使用 「startActivity」函式,傳入適當?shù)摹窱ntent」,來呼叫瀏覽器的 Activity。

到目前為止,我們可以由學習 Android 應用程式的經(jīng)驗中歸納得出:所有 Android 程式的運作流程,都定義在 Activity 中。

Android 系統(tǒng)與其他系統(tǒng)很不一樣的地方是:它的應用程式並不直接與底層系統(tǒng)緊密結合,而是跑在 Android 框架中。這意思是設計 Android 應用程式時,我們並不需要關心實際上運作的機器是哪一牌的手機或是哪一種嵌入式系統(tǒng),或使用哪一種架構(ARM、x86、MIPS)。我們要關心的只有Android 框架提供了那些功能,好讓我們能操作這臺設備。具體來說就是我們只要知道這臺機器的螢幕大小、有沒有鍵盤,有沒有支援 GPS 等等訊息,就知道我們寫的應用程式是否能在這臺機器上順暢地運作。Android 框架與底層系統(tǒng)的整合的問題完全可以留給軔體工程師來操心。

在執(zhí)行「startActivity」函式時,應用程式並不是直接呼叫另一個 Activity,而是將「Intent」(意圖)傳進 Android 框架中。 Android 框架會查看 「startActivity」 呼叫所傳入的動作與 Intent 內(nèi)容是否在註冊表中,如果符合,就啟動對應的服務或 Activity。

Android 系統(tǒng)中的每一個應用程式,在安裝的過程裡,都得事先在 Android 框架中註冊、登記這個應用程式所建立的 Activity,並事先註明會使用到的服務。譬如當我們在 Android 上安裝我們撰寫的 BMI 應用程式時,BMI 應用程式就會向 Android 框架登記相關資訊:BMI 應用程式將會用到 「Bmi」這個 Activity。

這份訊息存在於每個 Android 應用程式專案根目錄下的「AndroidManifest.xml」檔案中。如果我們在程式裡,要用到其他應用程式或服務所提供的功能,也需一併在此列出。

在安裝應用程式的時候,Android 框架會根據(jù)應用程式提供的這份清單,將資訊註冊於 Android 框架的註冊表中。

備註:

這麼說其實是不太精確的。Android 應用程式的運作流程,存在於四種載體中:

Activity (活動)

Broadcast Intent Receiver

Service

Content Provider

各種載體的相關內(nèi)容會在後續(xù)章節(jié)提到時作解說。

預設的 Activity 清單AndroidManifest.xml」檔案。切換到「AndroidManifest.xml」分頁標籤,查看預設的 「BMI/AndroidManifest.xml」檔案原始碼:

我們使用 eclipse Android 開發(fā)工具打開「BMI/

1 2 6 7 8 9 10 11 12 13 14 15

我們分行講解如下:

....

「AndroidManifest.xml」這個檔案也是以 XML 格式描述,每個 Android 應用程式都需要一個「AndroidManifest.xml」檔案,每份「AndroidManifest.xml」檔案的開頭都會出現(xiàn)這段敘述。而整個「AndroidManifest.xml」檔案的敘述,都包含在「manifest」(清單)這個主要標籤中。

package="com.demo.android.bmi"

「package」 是「manifest」(清單)標籤的一個特別屬性,範例中的內(nèi)容可用來標明,這個應用程式的進入點存在於「com.demo.android.bmi」這個名稱空間/路徑中。

android:versionCode="1"android:versionName="1.0"

「android:versionCode」和「android:versionName」是應用程式版本號。 這兩個屬性是可選的(非必要)。 「android:versionName」是給使用者看的版本號,如「1.0」、「2.0」?!竌ndroid:versionCode」則是開發(fā)者用的內(nèi)部版本號,一般使用流水號。

...

「manifest」標籤中主要包含一個「application」標籤(備註1)。「application」標籤裡面,定義了所有這個應用程式用到的 Activity、服務等資訊?!竌pplication」標籤中的「android:icon」屬性,定義了這個應用程式將顯示在 Android 主畫面中的應用程式圖示?!竌ndroid:icon="@drawable/icon"」表示應用程式圖示的資源檔存在於 「res/drawable/icon」 中。圖示的大小必須超過 64x64 像素(Pixel)。「application」標籤中的「android:label」屬性可用來指定應用程式將顯示在 Home 主畫面上的名稱。也就是預設剛開好機時,可以從桌面下方拉出的應用程式列表。

...

「application」標籤中所有用到的 Activity ,都要包含在一個個「activity」標籤中(備註2)。 Activity 是 Android 應用程式與使用者互動的主要元素,當使用者開啟一個應用程式,第一個看到的畫面就是一個 Activity。若是一個應用程式中包含多個畫面時,會定義多個不同的 Activity,我們也必須在「application」標籤中,使用多個「activity」標籤,為不同的 Activity 添加描述。如果我們已經(jīng)在程式碼中定義好了 Activity ,卻忘了在「AndroidManifest.xml」檔案中加入對應的「activity」標籤,那麼在執(zhí)行中呼叫到這個 Activity 的時候,將無法開啟這個 Activity。

「activity」標籤的「android:name」屬性,指出了這個 Activity 所對應的類別(class)?!竌ctivity」標籤中的「android:label」屬性可用來指定應用程式將顯示在 Activity 畫面上方的名稱。也可以在程式碼中透過「setTitle(“名稱”)」來動態(tài)修改。[!--empirenews.page--]

因為在上一層「Manifest」標籤屬性中已經(jīng)定義了「package="com.demo.android.bmi"」,因此在「activity」標籤的 「android:name」屬性中,「.Bmi」代表著「com.demo.android.bmi.Bmi」的簡寫。也可以寫成「Bmi」,一樣是代表「com.demo.android.bmi.Bmi」這個類別。

「intent-filter」標籤定義了這個「activity」的性質(zhì)。 「intent-filter」中主要包含了兩個標籤:「action」跟「category」標籤。 「action」標籤中的「android:name」屬性,其內(nèi)容「android.intent.action.MAIN」表示:這個 Activity 是此應用程式的進入點(就像程式中常見的 main 主程式),開啟這個應用程式時,應先執(zhí)行這個 Activity。 。常見的還有「android.intent.action.EDIT」等標籤,會在之後章節(jié)用上的時候講解?!竎ategory」標籤中的「android:name」屬性,其內(nèi)容「android.intent.category.LAUNCHER」表示:這個 Activity 將顯示在 Launcher 的應用程式列表中。

我們把整個檔案合到一起看,可以總結出這個檔案所傳達的訊息:在「com.demo.android.bmi」路徑下的「Bmi.java」這個檔案中,已定義了一個主要的 Activity; 當我們打開 Android 的時候,顯示的是位於「res/drawable/icon」的圖示。一旦我們按下圖示來啟動這個應用程式,Android 應用程式框架會去尋找到定義了「android.intent.action.MAIN」內(nèi)容的 「.Bmi」activity,並呼叫執(zhí)行。

Android SDK 1.1 版之後引入了這條敘述。透過指定這個參數(shù),系統(tǒng)可以依此辨別應用程式是否使用相容的 SDK 版本,好決定能否在這臺機器上安裝執(zhí)行?!?」代表 Android SDK 1.0,「2」代表 SDK 1.1,「3」代表 SDK 1.5。這也是一個可選填的選項。但如果我們的應用程式要發(fā)佈出去,一些強勢的通路如 Google Android Market 已規(guī)定所有新發(fā)佈的應用程式必須指定「android:minSdkVersion」這個參數(shù)。

備註1

除了「application」標籤外,還有「uses-permission」(例如允不允許存取SMS、能否存取聯(lián)絡簿、相機功能)、「permission」、「instrumentation」等主要標籤。相關的內(nèi)容在後續(xù)章節(jié)用到時再一併解說。

備註2

除了「activity」標籤外,對應於 Android 應用程式的運作流程,還有「service」、「receiver」、「provider」等主要元件。相關內(nèi)容會在後續(xù)章節(jié)提到時作解說。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅(qū)動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅(qū)動性能的關鍵。

關鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質(zhì)量和效率直接關系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅(qū)動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關鍵字: LED 驅(qū)動電源 開關電源

LED驅(qū)動電源是把電源供應轉換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅(qū)動電源
關閉