一:service是什麼
二:service的生命週期方法
在定義service子類時,需要重寫以下方法:
內部自動呼叫的方法
作用oncreat()
建立服務
onstartcommand()
開始服務
ondestroy()
銷毀服務
onbind()
繫結服務
onunbind()
解綁服務
在其他地方,建立服務、啟動服務、停止服務時,需要呼叫以下方法:
startservice()
啟動服務
stopservice()
關閉服務
bindservice()
繫結服務
unbindservice()
解綁服務
1:呼叫startservice()後,自動呼叫service內部方法:oncreate()、onstartcommand()
2:呼叫stopservice()後,自動呼叫內部方法:ondestory()
3:呼叫bindservice()後,自動呼叫內部方法:oncreate()、onbind()
4:呼叫unbindservice()後,自動呼叫內部方法:oncreate()、onbind()、ondestory()
三:常見的生命週期呼叫
1:startservice()啟動服務、stopservice()停止服務:只能開啟和關閉service,無法操作service;若啟動服務後,無手動呼叫stopservice(),則程式退出後服務仍然存在
2:bindservice()繫結服務、unbindservice()解綁服務:service隨著呼叫者銷毀而停止。
3:使用startservice()啟動服務,再使用bindservice()繫結服務——使用unbindservice()解綁服務,再使用stopservice()停止服務:要先解綁,才能停止服務。
四:service的型別
【來自:
五:不同型別service的使用
步驟1:新建子類繼承service類,重寫父類的oncreate()、onstartcommand()、ondestroy()和onbind()方法androidmanifest裡service的常見屬性說明屬性說明備註步驟2:在androidmanifest.xml裡註冊該service
步驟3:在activity的**中,建立用於啟動service的intent物件
步驟4:呼叫startservice(intent)啟動service、呼叫stopservice(intent)停止服務
android:name
service的類名
android:label
service的名字
若不設定,預設為service類名
android:icon
service的圖示
android:permission
申明此service的許可權
有提供了該許可權的應用才能控制或連線此服務
android:process
表示該服務是否在另乙個程序中執行(遠端服務)
不設定預設為本地服務;remote則設定成遠端服務
android:enabled
系統預設啟動
true:service 將會預設被系統啟動;不設定則預設為false
android:exported
該服務是否能夠被其他應用程式所控制或連線
不設定預設此項為 false
2:遠端服務:與程式無關,系統級別的服務
遠端service與呼叫者不在同乙個程序裡(即遠端service是執行在另外乙個程序)
一般用在多個應用程式共享同乙個後台服務(遠端服務)的情況。
我們把service稱為伺服器端、需要與service通訊的程序稱為客戶端。
aidl:android inte***ce definition language,即android介面定義語言;用於讓某個service與多個應用程式元件之間進行跨程序通訊,從而可以實現多個應用程式共享同乙個service的功能。具體使用參見:
3:前台服務
前台服務是指在手機的下拉通知欄保持顯示乙個通知。
前台service優先順序較高,不會由於系統記憶體不足而被**;後台service優先順序較低,當系統出現記憶體不足情況時,很有可能會被**。
前台服務不是一種特殊的服務型別,它只是在一般的後台服務的基礎上新增了幾個屬性,使其具有了前台顯示的介面而已。任何服務都可以通過以下方法成為前台服務:
在原有的service類對oncreate()方法中新增以下內容:
@override4:可通訊服務public
void
oncreate()
上面建立的服務,除了啟動、停止之外,並不能與activity進行互動,即:activity不能訪問服務中的其他方法。
要通過activity操作service的話,需要用到繫結服務。
1)新建子類繼承service類,並在其中新建乙個內部類繼承自binder類,在binder子類中定義activity需要呼叫的方法。
然後在service子類中建立binder子類例項,並在onbind()方法中return 這個例項。
2)在activity中,建立serviceconnection例項,並且重寫其onserviceconnected()方法,把連線傳遞過來的binder強制型別轉換為第一步中建立的binder。
3)在activity中,建立乙個binder例項,然後通過bindservice()方法,把serviceconnection例項作為引數傳遞進去,從而把建立的binder賦值為繫結成功後得到的service中的binder例項。
4)最後,通過binder呼叫其內部定義好的方法,從而實現activity與service的通訊。
各種服務型別的使用場景:
六:service與thread的區別
一般來說,會將service和thread聯合著用,即在service中再建立乙個子執行緒(工作執行緒)去處理耗時操作邏輯。
學習筆記(九)
字元處理只針對c n d t string型別,不做型別轉換,都按照c型別處理,也可以處理這些型別構成的結構體,有專門的字串比較 定位操作 concatenate first name last name into first name separated by separate.write fir...
Android學習筆記
android系列 第一期 第一課 android初步認識 今天我們來初步了解一下安卓吧。首先,說到android,大家都非常熟悉了,相信都用過android手機吧,android給我們的第一印象應該是它的logo 乙個小機械人,如下圖1所示。圖1 android logo 嗯,好,認識了andro...
Android學習筆記
1 android四大天王 1 activity 介面元件,使用者介面,整個應用程式的門面 2 intent 用於應用之間傳輸資料 3 service 承擔資料處理的工作 4 content provider 為應用提供資料 android檔案目錄 1 assets 2 res drawable 放...