Android系統(tǒng)的四大組件詳解_第1頁
Android系統(tǒng)的四大組件詳解_第2頁
Android系統(tǒng)的四大組件詳解_第3頁
Android系統(tǒng)的四大組件詳解_第4頁
Android系統(tǒng)的四大組件詳解_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第第頁Android系統(tǒng)的四大組件詳解Android系統(tǒng)的四大組件詳解

發(fā)表于:2023-02-22來源:Csdn:不詳點擊數(shù):標簽:Android

Android四大基本組件介紹與生命周期Android四大基本組件分別是Activity,Service服務(wù),ContentProvider內(nèi)容提供者,BroadcastReceiver廣播接收器。

Android四大基本組件介紹與生命周期

Android四大基本組件分別是Activity,Service服務(wù),ContentProvider內(nèi)容提供者,BroadcastReceiver廣播接收器。

一:了解四大基本組件

Activity:

應(yīng)用程序中,一個Activity通常就是一個單獨的屏幕,它上面可以顯示一些控件也可以監(jiān)聽并處理用戶的事件做出響應(yīng)。

Activity之間通過Intent進行通信。在Intent的描述結(jié)構(gòu)中,有兩個最重要的部分:動作和動作對應(yīng)的數(shù)據(jù)。

典型的動作類型有:MAIN(activity的門戶)、VIEW、PICK、EDIT等。而動作對應(yīng)的數(shù)據(jù)則以URI的形式進行表示。例如:要查看一個人的聯(lián)系方式,你需要創(chuàng)建一個動作類型為VIEW的intent,以及一個表示這個人的URI。

與之有關(guān)系的一個類叫IntentFilter。相對于intent是一個有效的做某事的請求,一個intentfilter則用于描述一個activity(或者IntentReceiver)能夠操作哪些intent。一個activity如果要顯示一個人的聯(lián)系方式時,需要聲明一個IntentFilter,這個IntentFilter要知道怎么去處理VIEW動作和表示一個人的URI。IntentFilter需要在AndroidManifest.xml中定義。通過解析各種intent,從一個屏幕導(dǎo)航到另一個屏幕是很簡單的。當向前導(dǎo)航時,activity將會調(diào)用startActivity(IntentmyIntent)方法。然后,系統(tǒng)會在所有安裝的應(yīng)用程序中定義的IntentFilter中查找,找到最匹配myIntent的Intent對應(yīng)的activity。新的activity接收到myIntent的通知后,開始運行。當startActivity方法被調(diào)用將觸發(fā)解析myIntent的動作,這個機制提供了兩個關(guān)鍵好處:

A、Activities能夠重復(fù)利用從其它組件中以Intent的形式產(chǎn)生的一個請求;

B、Activities可以在任何時候被一個具有相同IntentFilter的新的Activity取代。

AndroidManifest文件中含有如下過濾器的Activity組件為默認啟動類當程序啟動時系統(tǒng)自動調(diào)用它

BroadcastReceive廣播接收器:

你的應(yīng)用可以使用它對外部事件進行過濾只對感興趣的外部事件(如當電話呼入時,或者數(shù)據(jù)網(wǎng)絡(luò)可用時)進行接收并做出響應(yīng)。廣播接收器沒有用戶界面。然而,它們可以啟動一個activity或serice來響應(yīng)它們收到的信息,或者用NotificationManager來通知用戶。通知可以用很多種方式來吸引用戶的注意力──閃動背燈、震動、播放聲音等。一般來說是在狀態(tài)欄上放一個持久的圖標,用戶可以打開它并獲取消息。

廣播類型:

普通廣播,通過Context.sendBroadcast(IntentmyIntent)發(fā)送的

有序廣播,通過Context.sendOrderedBroadcast(intent,receiverPermission)發(fā)送的,該方法第2個參數(shù)決定該廣播的級別,級別數(shù)值是在-1000到1000之間,值越大,發(fā)送的優(yōu)先級越高;廣播接收者接收廣播時的級別級別(可通過intentfilter中的priority進行設(shè)置設(shè)為2147483647時優(yōu)先級最高),同級別接收的先后是隨機的,再到級別低的收到廣播,高級別的或同級別先接收到廣播的可以通過abortBroadcast()方法截斷廣播使其他的接收者無法收到該廣播,還有其他構(gòu)造函數(shù)

異步廣播,通過Context.sendStickyBroadcast(IntentmyIntent)發(fā)送的,還有sendStickyOrderedBroadcast(intent,resultReceiver,scheduler,initialCode,initialData,initialExtras)方法,該方法具有有序廣播的特性也有異步廣播的特性;發(fā)送異步廣播要:權(quán)限,接收并處理完Intent后,廣播依然存在,直到你調(diào)用removeStickyBroadcast(intent)主動把它去掉

注意:發(fā)送廣播時的intent參數(shù)與Contex.startActivity()啟動起來的Intent不同,前者可以被多個訂閱它的廣播接收器調(diào)用,后者只能被一個(Activity或service)調(diào)用

監(jiān)聽廣播Intent步驟:

1寫一個繼承BroadCastReceiver的類,重寫onReceive()方法,廣播接收器僅在它執(zhí)行這個方法時處于活躍狀態(tài)。當onReceive()返回后,它即為失活狀態(tài),注意:為了保證用戶交互過程的流暢,一些費時的操作要放到線程里,如類名SMSBroadcastReceiver

2注冊該廣播接收者,注冊有兩種方法程序動態(tài)注冊和AndroidManifest文件中進行靜態(tài)注冊(可理解為系統(tǒng)中注冊)如下:

靜態(tài)注冊,注冊的廣播,下面的priority表示接收廣播的級別2147483647為最高優(yōu)先級

動態(tài)注冊,一般在Activity可交互時onResume()內(nèi)注冊BroadcastReceiver

IntentFilterintentFilter=newIntentFilter(vider.Telephony.SMS_RECEIVED);

registerReceiver(mBatteryInfoReceiver,intentFilter);

//反注冊

unregisterReceiver(receiver);

注意:

1.生命周期只有十秒左右,如果在onReceive()內(nèi)做超過十秒內(nèi)的事情,就會報ANR(ApplicationNoResponse)程序無響應(yīng)的錯誤信息,如果需要完成一項比較耗時的工作,應(yīng)該通過發(fā)送Intent給Service,由Service來完成.這里不能使用子線程來解決,因為BroadcastReceiver的生命周期很短,子線程可能還沒有結(jié)束BroadcastReceiver就先結(jié)束了.BroadcastReceiver一旦結(jié)束,此時BroadcastReceiver的所在進程很容易在系統(tǒng)需要內(nèi)存時被優(yōu)先殺死,因為它屬于空進程(沒有任何活動組件的進程).如果它的宿主進程被殺死,那么正在工作的子線程也會被殺死.所以采用子線程來解決是不可靠的

2.動態(tài)注冊廣播接收器還有一個特點,就是當用來注冊的Activity關(guān)掉后,廣播也就失效了。靜態(tài)注冊無需擔憂廣播接收器是否被關(guān)閉,只要設(shè)備

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論