面試知識點 四大元件

2021-07-29 01:43:11 字數 3109 閱讀 8299

摘抄了好多人的部落格,自己的一點認識。希望小夥伴們指點。

android的四大元件是哪些,它們的作用?

一、activity:activity是android程式與使用者互動的視窗,是android構造塊中最基本的一種。android功能:繪製頁面、載入資源檔案,完成功能邏輯,資料處理。

activity的生命週期:啟動activity  oncreate()->onstart()->onresume()

activity退居後台:當前activity轉到新的activity介面或按home鍵回到主屏(不在棧頂):onpause()—>onstop(),進入停滯狀態。

activity返回前台:onrestart()—>onstart()—>onresume(),再次回到執行狀態,這時沒有建立新的activity。

activity退居後台,且系統記憶體不足,系統會殺死這個後台狀態的activity(此時這個activity引用仍然處在任務棧中,只是這個時候引用指向的物件已經為null),若再次回到這個activity,則會走oncreate()–>onstart()—>onresume()(將重新走一次activity的初始化生命週期)

鎖屏:onpause()->onstop()

解鎖:onstart()->onresume()

服務一般分為兩種:

1:本地服務, local service 用於應用程式內部。在service可以呼叫context.startservice()啟動,呼叫context.stopservice()結束。 在內部可以呼叫service.stopself() 或 service.stopselfresult()來自己停止。無論呼叫了多少次startservice(),都只需呼叫一次 stopservice()來停止。

context.startservice() ->oncreate()- >onstartcommand()->service running--呼叫context.stopservice() ->ondestroy() 

2:遠端服務, remote service 用於android系統內部的應用程式之間。可以定義介面並把介面暴露出來,以便其他應用進行操作。客戶端建立到服務物件的連線,並通過那個連線來呼叫服 務。呼叫context.bindservice()方法建立連線,並啟動,以呼叫 context.unbindservice()關閉連線。多個客戶端可以繫結至同乙個服務。如果服務此時還沒有載入,bindservice()會先加 載它。

提供給可被其他應用復用,比如定義乙個天氣預報服務,提供與其他應用呼叫即可。

context.bindservice()

->oncreate()->onbind()->service running--呼叫》onunbind() -> ondestroy()

同一服務,多次啟動,服務實際執行的過程

第一次 啟動服務時,執行 oncreate -->onstartcommand

後面在啟動服務時,服務只執行onstartcommand

在實際使用過程中,通過intent 傳遞資料,在onstartcommand中執行。

三、content provider:是android提供的第三方應用資料的訪問方案,可以派生content provider類,對外提供資料,可以像資料庫一樣進行選擇排序,遮蔽內部資料的儲存細節,向外提供統一的藉口模型,大大簡化上層應用,對資料的整合提供了更方便的途徑

四、broadcast receiver:接受一種或者多種intent作觸發事件,接受相關訊息,做一些簡單處理,轉換成一條notification,統一了android的事件廣播模型

廣播被分為兩種不同的型別:「普通廣播(

normal broadcasts

)」和「有序廣播(

ordered broadcasts

)」。普通廣播是完全非同步的,可以在同一時刻(邏輯上)被所有廣播接收者接收到,訊息傳遞的效率比較高,但缺點是:接收者不能將處理結果傳遞給下乙個接收者,並且無法終止廣播

intent

的傳播;然而有序廣播是按照接收者宣告的優先級別(宣告在

intent-filter

元素的android:priority

屬性中,數越大優先級別越高

,取值範圍

:-1000

到1000

。也可以呼叫

intentfilter

物件的setpriority

()進行設定

),被接收者依次接收廣播。如:

a的級別高於

b,b的級別高於

c,那麼,廣播先傳給

a,再傳給

b,最後傳給c

。a得到廣播後,可以往廣播裡存入資料,當廣播傳給b時

,b可以從廣播中得到

a存入的資料。

context.sendbroadcast()

傳送的是普通廣播,所有訂閱者

都有機會獲得並進行處理。

context.sendorderedbroadcast()

傳送的是

有序廣播,系統會根據接收者宣告的優先級別按順序逐個執行接收者,前面的接收者有權終止廣播

(broadcastreceiver.abortbroadcast())

,如果廣播被前面的接收者終止,後面的接收者就再也無法獲取到廣播。對於

有序廣播,前面的接收者可以將處理結果存放進廣播

intent

,然後傳給下乙個接收者。

四大元件(四) content provider

content provider相當於是程式與程式之間的介面。讓原本不可能通訊的程式,通過內容提供者這個橋梁變得可以通訊。定義乙個類 繼承 contentprovider public class backdoor extends contentprovider 註冊contentprovider ...

android 四大元件

1.activity 2.service 3.contentprovider 應用中的資料,對外進行共享,其它應用可以通過內容提供者,可以訪問到你應用中的資料,對資料進行增刪改查 1 對不同的資料格式,統一了檔案格式和資料訪問api 2 內容提供者要繼承contentprovider類 3 在清單檔...

Android 四大元件

activity intent receiver service content provider 並不是每乙個android應用程式都需要這四種構造塊,這不是必須的。當我們明確了我們的應用需要哪些構造塊後,我們就需要在androidmanifest.xml中登記這些構造塊的清單。這個配置檔案用於定...