您好,歡迎來(lái)到一站式眾包服務(wù)平臺(tái)-威客牛網(wǎng)
當(dāng)前位置:威客牛首頁(yè) > 知識(shí)百科 > IT軟件 > App開(kāi)發(fā) > 開(kāi)發(fā)android有哪些應(yīng)用需知?

開(kāi)發(fā)android有哪些應(yīng)用需知?

2022-12-04作者:網(wǎng)友投稿
Android開(kāi)發(fā)四大組件分別是:活動(dòng)(Activity): 用于表現(xiàn)功能。服務(wù)(Service): 后臺(tái)運(yùn)行服務(wù),不提供界面呈現(xiàn)。廣播接收器(BroadcastReceiver):用于接收廣播。內(nèi)容提供商(Content Provider): 支持在多個(gè)應(yīng)用中存儲(chǔ)和讀取數(shù)據(jù),相當(dāng)于數(shù)據(jù)庫(kù)。以下是贏在威客網(wǎng)小編整理的開(kāi)發(fā)android應(yīng)用需知。

活動(dòng)


Android 中,Activity是所有程序的根本,所有程序的流程都運(yùn)行在Activity 之中,Activity可以算是開(kāi)發(fā)者遇到的最頻繁,也是Android 當(dāng)中最基本的模塊之一。在Android的程序當(dāng)中,Activity 一般代表手機(jī)屏幕的一屏。如果把手機(jī)比作一個(gè)瀏覽器,那么Activity就相當(dāng)于一個(gè)網(wǎng)頁(yè)。在Activity 當(dāng)中可以添加一些Button、Check box 等控件。可以看到Activity 概念和網(wǎng)頁(yè)的概念相當(dāng)類(lèi)似。

一般一個(gè)Android 應(yīng)用是由多個(gè)Activity 組成的。這多個(gè)Activity 之間可以進(jìn)行相互跳轉(zhuǎn),例如,按下一個(gè)Button按鈕后,可能會(huì)跳轉(zhuǎn)到其他的Activity。和網(wǎng)頁(yè)跳轉(zhuǎn)稍微有些不一樣的是,Activity 之間的跳轉(zhuǎn)有可能返回值,例如,從Activity A 跳轉(zhuǎn)到Activity B,那么當(dāng)Activity B 運(yùn)行結(jié)束的時(shí)候,有可能會(huì)給Activity A 一個(gè)返回值。這樣做在很多時(shí)候是相當(dāng)方便的。

當(dāng)打開(kāi)一個(gè)新的屏幕時(shí),之前一個(gè)屏幕會(huì)被置為暫停狀態(tài),并且壓入歷史堆棧中。用戶(hù)可以通過(guò)回退操作返回到以前打開(kāi)過(guò)的屏幕??梢赃x擇性的移除一些沒(méi)有必要保留的屏幕,因?yàn)锳ndroid會(huì)把每個(gè)應(yīng)用的開(kāi)始到當(dāng)前的每個(gè)屏幕保存在堆棧中。

服務(wù)

Service 是android 系統(tǒng)中的一種組件,它跟Activity 的級(jí)別差不多,但是他不能自己運(yùn)行,只能后臺(tái)運(yùn)行,并且可以和其他組件進(jìn)行交互。Service 是沒(méi)有界面的長(zhǎng)生命周期的代碼。Service是一種程序,它可以運(yùn)行很長(zhǎng)時(shí)間,但是它卻沒(méi)有用戶(hù)界面。這么說(shuō)有點(diǎn)枯燥,來(lái)看個(gè)例子。打開(kāi)一個(gè)音樂(lè)播放器的程序,這個(gè)時(shí)候若想上網(wǎng)了,那么,打開(kāi)Android瀏覽器,這個(gè)時(shí)候雖然已經(jīng)進(jìn)入了瀏覽器這個(gè)程序,但是,歌曲播放并沒(méi)有停止,而是在后臺(tái)繼續(xù)一首接著一首的播放。其實(shí)這個(gè)播放就是由播放音樂(lè)的Service進(jìn)行控制。當(dāng)然這個(gè)播放音樂(lè)的Service也可以停止,例如,當(dāng)播放列表里邊的歌曲都結(jié)束,或者用戶(hù)按下了停止音樂(lè)播放的快捷鍵等。Service 可以在和多場(chǎng)合的應(yīng)用中使用,比如播放多媒體的時(shí)候用戶(hù)啟動(dòng)了其他Activity這個(gè)時(shí)候程序要在后臺(tái)繼續(xù)播放,比如檢測(cè)SD 卡上文件的變化,再或者在后臺(tái)記錄地理信息位置的改變等等,總之服務(wù)嘛,總是藏在后頭的。

開(kāi)啟Service有兩種方式:

(1) Context.startService():Service會(huì)經(jīng)歷onCreate -> onStart(如果Service還沒(méi)有運(yùn)行,則android先調(diào)用onCreate()然后調(diào)用onStart();如果Service已經(jīng)運(yùn)行,則只調(diào)用onStart(),所以一個(gè)Service的onStart方法可能會(huì)重復(fù)調(diào)用多次 );StopService的時(shí)候直接onDestroy,如果是調(diào)用者自己直接退出而沒(méi)有調(diào)用StopService的話,Service會(huì)一直在后臺(tái)運(yùn)行。該Service的調(diào)用者再啟動(dòng)起來(lái)后可以通過(guò)stopService關(guān)閉Service。 注意,多次調(diào)用Context.startservice()不會(huì)嵌套(即使會(huì)有相應(yīng)的onStart()方法被調(diào)用),所以無(wú)論同一個(gè)服務(wù)被啟動(dòng)了多少次,一旦調(diào)用Context.stopService()或者StopSelf(),他都會(huì)被停止。補(bǔ)充說(shuō)明:傳遞給StartService(0的Intent對(duì)象會(huì)傳遞給onStart()方法。調(diào)用順序?yàn)椋簅nCreate --> onStart(可多次調(diào)用) --> onDestroy。

(2) Context.bindService():Service會(huì)經(jīng)歷onCreate() -->onBind(),onBind將返回給客戶(hù)端一個(gè)IBind接口實(shí)例,IBind允許客戶(hù)端回調(diào)服務(wù)的方法,比如得到Service運(yùn)行的狀態(tài)或其他操作。這個(gè)時(shí)候把調(diào)用者(Context,例如Activity)會(huì)和Service綁定在一起,Context退出了,Srevice就會(huì)調(diào)用onUnbind --> onDestroyed相應(yīng)退出,所謂綁定在一起就共存亡了。

廣播接收器

在Android 中,Broadcast是一種廣泛運(yùn)用的在應(yīng)用程序之間傳輸信息的機(jī)制。而B(niǎo)roadcastReceiver 是對(duì)發(fā)送出來(lái)的Broadcast進(jìn)行過(guò)濾接受并響應(yīng)的一類(lèi)組件??梢允褂肂roadcastReceiver 來(lái)讓?xiě)?yīng)用對(duì)一個(gè)外部的事件做出響應(yīng)。這是非常有意思的,例如,當(dāng)電話呼入這個(gè)外部事件到來(lái)的時(shí)候,可以利用BroadcastReceiver 進(jìn)行處理。例如,當(dāng)下載一個(gè)程序成功完成的時(shí)候,仍然可以利用BroadcastReceiver 進(jìn)行處理。BroadcastReceiver不能生成UI,也就是說(shuō)對(duì)于用戶(hù)來(lái)說(shuō)不是透明的,用戶(hù)是看不到的。BroadcastReceiver通過(guò)NotificationManager 來(lái)通知用戶(hù)這些事情發(fā)生了。BroadcastReceiver 既可以在AndroidManifest.xml 中注冊(cè),也可以在運(yùn)行時(shí)的代碼中使用Context.registerReceiver()進(jìn)行注冊(cè)。只要是注冊(cè)了,當(dāng)事件來(lái)臨的時(shí)候,即使程序沒(méi)有啟動(dòng),系統(tǒng)也在需要的時(shí)候啟動(dòng)程序。各種應(yīng)用還可以通過(guò)使用Context.sendBroadcast () 將它們自己的Intent Broadcasts廣播給其他應(yīng)用程序。

內(nèi)容提供

Content Provider 是Android提供的第三方應(yīng)用數(shù)據(jù)的訪問(wèn)方案。

在Android中,對(duì)數(shù)據(jù)的保護(hù)是很?chē)?yán)密的,除了放在SD卡中的數(shù)據(jù),一個(gè)應(yīng)用所持有的數(shù)據(jù)庫(kù)、文件等內(nèi)容,都是不允許其他直接訪問(wèn)的。Andorid當(dāng)然不會(huì)真的把每個(gè)應(yīng)用都做成一座孤島,它為所有應(yīng)用都準(zhǔn)備了一扇窗,這就是Content Provider。應(yīng)用想對(duì)外提供的數(shù)據(jù),可以通過(guò)派生Content Provider類(lèi), 封裝成一枚Content Provider,每個(gè)Content Provider都用一個(gè)uri作為獨(dú)立的標(biāo)識(shí),形如:content://com.xxxxx。所有東西看著像REST的樣子,但實(shí)際上,它比REST 更為靈活。和REST類(lèi)似,uri也可以有兩種類(lèi)型,一種是帶id的,另一種是列表的,但實(shí)現(xiàn)者不需要按照這個(gè)模式來(lái)做,給id的uri也可以返回列表類(lèi)型的數(shù)據(jù),只要調(diào)用者明白,就無(wú)妨,不用苛求所謂的REST。
免費(fèi)查詢(xún)商標(biāo)注冊(cè)