Android應用程式設計基礎

2022-11-21 01:18:03 字數 1937 閱讀 3703

android應用程式設計基礎第28篇:android四大元件

前篇我們已經介紹了activity以及其生命週期,我想大家已經有所了解了。今天我們就來講講四大元件中的service。

service作為android中四大元件之一,擁有重要的地位。service具有和activity一樣的級別,service跟activity的區別就是service沒有介面,是執行於後台的服務。這個執行「後台」是指不可見,不是指在後台執行緒中。

事實上四大元件都是執行在ui執行緒中,都不能在各自的生命週期方法中執行耗時操作或者網路請求。 service的應用場景還是比較多的,比如說在後台****、實時去更新當前地理位置的變化、新聞app後台去離線快取內容、程序間通訊等。

service主要可以分為兩類:local service、remote service。比較常用的還是local service,應用於程式內部。

可以通過startservice()啟動service,通過stopservice()結束服務。無論呼叫多少次startservice(),只需一句stopservice()就終結服務了。startservice()和stopservice()適用於服務和訪問者之間沒有互動的情況。

如果服務和訪問者之間需要方法呼叫或者傳遞引數,則需要使用 bindservice() 和 unbindservice() 方法繫結和解綁服務。採用 bindservice() 方法啟動服務,在服務未被建立時,系統會先呼叫服務的 oncreate() 方法,接著呼叫 onbind() 方法,這個時候訪問者和服務繫結在一起。 如果訪問者要與服務進行通訊,那麼,onbind() 方法必須返回 ibinder 物件。

如果訪問者退出了,系統就會先呼叫服務的 onunbind() 方法,接著呼叫 ondestroy() 方法。如果呼叫 bindservice() 方法前服務已經被繫結,多次呼叫 bindservice() 方法並不會導致多次建立服務及繫結(也就是說 oncreate() 和 onbind() 方法並不會被多次呼叫)。如果訪問者希望與正在繫結的服務解除繫結,可以呼叫 unbindservice() 方法,呼叫該方法也會導致系統呼叫服務的 onunbind() → ondestroy() 方法。

remote service 用於android系統內部的應用程式之間。可以定義介面並把介面暴露出來,以便其他應用進行操作。客戶端建立到服務物件的連線,並通過那個連線來呼叫服務。

呼叫bindservice()方法建立連線,並啟動,以呼叫 unbindservice()關閉連線。多個客戶端可以繫結至同乙個服務。如果服務此時還沒有載入,bindservice()會先載入它。

下面我們就用google官方的一張圖來了解下service的生命週期。

圖1 service的生命週期

1.當使用startservice() 方法啟動服務,生命週期如下:

oncreate() → onstart() → ondestroy()

oncreate() 該方法在服務被建立時呼叫,該方法只會被呼叫一次,無論呼叫多少次 startservice() 或bindservice() 方法,服務也只被建立一次。只有採用 startservice() 方法啟動服務時才會**onstart()方法,該方法在服務開始執行時被呼叫。多次呼叫 startservice() 方法儘管不會多次建立服務,但 onstart() 方法會被多次呼叫。

ondestroy() 該方法在服務被終止時呼叫。

2.當採用 bindservice() 方法繫結服務,生命週期如下:

oncreate() → onbind() → onunbind() → ondestroy()

onbind() 只有採用 bindservice() 方法啟動服務時才會**該方法。該方法在呼叫者與服務繫結時被呼叫,當呼叫者與服務已經繫結,多次呼叫 bindservice() 方法並不會導致該方法被多次呼叫。只有採用bindservice() 方法繫結服務後解綁服務時才會**onunbind() 方法。

該方法在呼叫者與服務解除繫結時被呼叫。

android應用程式設計規範

示例 public void exa,mpl e if if else if else void examplefun public class exampleclass 示例 if filename null new file logthpath filename length progrpm c...

應用程式設計報告

大作業題目 班級 學號 學生姓名 其他組員 作業成績 應用程式設計基礎 1 設計報告 1 目錄 2 大作業設計報告內容 2 一 需求分析 2 二 功能概要 3 三 模組組織 3 四 功能實現 4 1 計數模組 4 2 顏色模組 5 3 定時模組 6 4 新建儲存列印模組 7 5.幫助 10 五 製作...

序列口應用程式設計例項

1 串列埠方式0應用程式設計 8051微控制器序列口方式0為移位暫存器方式,外接乙個串入並出的移位暫存器,就可以擴充套件乙個並行口。例 用8051序列口外接cd4094擴充套件8位並行輸出口,如圖所示,8位並行口的各位都接乙個發光二極體,要求發光管呈流水燈狀態。序列口方式0的資料傳送可採用中斷方式,...