計算機套用技術專業畢業設計:Android手機播放器

例如,在一個聯繫人維護的套用中,當在一個聯繫人列表螢幕(假設對應的activity為listactivity)上,點擊某個聯繫人後,希望能夠調出此聯繫人的詳細信息,為了實現這個目的,listactivity需要構造一個intent,這個intent用於告訴系統,要做“查看”動作,此動作對應的查看對象是“某聯繫人”,然後調用startactivity(intent intent),將構造的intent傳入,系統會根據此intent中的描述,到androidmanifest.xml中找到滿足此intent要求的activity。系統會調用找到的activity,即為detailactivity,最終傳入intent,detailactivitv則會根據此intent中的描述,執行相應的操作。

3.3.1intent的抽象描述

在android參考文檔中,對意圖的定義是執行某操作的一個抽象描述。該抽象描述的具體內容如下:

首先,它是要執行的動作的一個簡要描述,如查看、修改等,android定義了一套標準動作。此外,還可以根據套用的需要,定義自己的動作,並可定義相應的活動來處理自定義的動作。

其次,是執行動作要操作的數據,android採用指向數據的一個uri方式來實現。

另外,除了動作和數據這兩個重要屬性外,還有一些附加屬性:

類別:被執行動作的附加信息。例如launcher_category表示意圖的接受者應該在launcher中作為頂級套用出現;而alternativecategory表示當前的意圖是一系列的可選動作中的一個,這些動作可以在同一個數據上執行。

數據類型:顯式指定意圖的數據類型。一般意圖的數據類型能夠根據數據本身進行判定,但是通過設定這個屬性,可以強制採用指定的類型。

組件:指定意圖的目標組件的類名稱。通常android會根據意圖中包含的其它屬性的信息,比如動作、數據/數據類型、類別進行查找,最終找到一個與之匹配的目標組件。但是,如果組件這個屬性有指定的話,將直接使用它指定的組件,而不再執行上述查找過程。指定了這個屬性以後,意圖的其它所有屬性都是可選的。

附加信息:是其它所有附加信息的集合。使用附加信息可以為組件提供擴展信息,比如,如果要執行“傳送電子郵件”這個動作,可以將電子郵件的標題、正文等保存在附加信息里,傳給電子郵件傳送組件。總之,動作、數據/數據類型、類別和附加信息一起形成了一種語言。這種語言使系統能夠理解諸如“查看某聯繫人的詳細信息”之類的短語。隨著套用不斷的加入到系統中,它們可以添加新的動作、數據/數據類型和類別來擴展這種語言。套用也可以提供自己的活動來處理已經存在的這樣的“短語”,從而改變這些“短語”的行為。

3.3.2android如何解析intent

在套用中,可以以兩種形式來使用intent:

(l)直接意圖:指定了組件屬性的意圖。通過指定具體的組件類,通知套用啟動對應的組件。

(2)間接意圖:沒有指定組件屬性的意圖。這些意圖需要包含足夠的信息,這樣系統才能根據這些信息,在所有的可用組件中,確定滿足此意圖的組件。對於直接意圖,android不需要去做解析,因為目標組件已經很明確,android需要解析的是那些間接意圖,通過解析,將意圖映射給可以處理此意圖的活動、意圖接收器或服務。

意圖解析機制主要是通過查找己註冊在androidmanifest.xml中的所有意圖過濾器及其中定義的意圖,最終找到匹配的意圖。在這個解析過程中,android是通過意圖的動作、數據類型、類別這三個屬性來進行判斷的,判斷方法如下:

如果意圖指明定了動作,則目標組件的意圖過濾器的動作列表中就必須包含有這個動作,否則不能匹配。

如果意圖沒有提供數據類型,系統將從數據中得到數據類型。和動作一樣,目標組件的數據類型列表中必須包含意圖的數據類型,否則不能匹配。

如果意圖中的數據不是content:類型的uri,而且意圖也沒有明確指定它的數據類型,將根據意圖中數據的格式(比如http:或者mailto:)進行匹配。同上,意圖的格式必須出現在目標組件的格式列表中。

如果意圖指定了一個或多個類別,這些類別必須全部出現在組建的類別列表中。比如意圖中包含了兩個類別:launcher_category和alternativec_category,解析得到的目標組件必須至少包含這兩個類別。

3.4android活動的生命周期

android平台是個手機作業系統。撇掉其他功能不談,手機的特性,就是應該能隨時在未完成目前動作的時候,暫停正在使用的功能,切換到接電話、接收簡訊模式,而且在接完電話回到應用程式時,還希望能看到一樣的內容。現在用戶使用智慧型手機,大多已習慣使用多工的作業系統(如windowsmobile),可以在用手機聽音樂的同時,執行其他多個程式。同時執行多個程式有它的明顯好處,但也有它的缺點。每多執行一個應用程式,就會多耗費一些系統記憶體,而手機里的記憶體是相當有限的。當同時執行的程式過多,或是關閉的程式沒有正確釋放掉記憶體,系統運行時就會覺得越來越慢,甚至不穩定。為了解決這個問題,android引入了一個新的機制—生命周期。