當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > Service的使用
一、概念
服務(wù)是一個(gè)長(zhǎng)生命周期的、沒(méi)有用戶(hù)界面的程序,一般服務(wù)是在后臺(tái)做耗時(shí)操作,所以可以使用服務(wù)來(lái)開(kāi)發(fā)如監(jiān)控類(lèi)的程序。
二、服務(wù)的創(chuàng)建、注冊(cè)、啟動(dòng)
1、服務(wù)的創(chuàng)建
開(kāi)發(fā)Service組件與Activity一樣,需要寫(xiě)一個(gè)子類(lèi)繼承Service,并重寫(xiě)相關(guān)的方法,如:
public class MyService extends Service {...}
2、服務(wù)的注冊(cè)
在AndroidMenifest.xml文件中注冊(cè)Service:
<service android:name="com.example.test.Service"></service>
或者:
<service android:name="com.example.test.MyService">
<intent-filter >
<action android:name="MyService"/>
</intent-filter>
</service>
3、服務(wù)的啟動(dòng)與停止
Intent intent = new Intent();
//intent.setClass(MainActivity.this, MyService.class);
intent.setAction("com.fs.service.MyService");
(1)啟動(dòng)/停止服務(wù):使用Context.startService() 方法啟動(dòng)服務(wù),使用Context.stopService()方法停止服務(wù)。
(2)綁定/解綁服務(wù):使用Context.bindService()方法綁定服務(wù),使用 Context.unbindService()方法解綁服務(wù)。
4、啟動(dòng)服務(wù)與綁定服務(wù)的區(qū)別
服務(wù)不能自己運(yùn)行,需要通過(guò)調(diào) 用 Context.startService() 或Context.bindService() 方法啟動(dòng)服務(wù)。這兩個(gè)方法都可以啟動(dòng)Service,但是它們的使用場(chǎng)合有所不同。
(1)使用 startService() 方法啟用服務(wù),訪(fǎng)問(wèn)者與服務(wù)之間沒(méi)有關(guān)聯(lián),即使訪(fǎng)問(wèn)者退出了,服務(wù)仍然運(yùn)行。
(2)使用 bindService() 方法啟用服務(wù),訪(fǎng)問(wèn)者與服務(wù)綁定在了一起,訪(fǎng)問(wèn)者一旦退出,服務(wù)也就終止。
(3)采用 Context.startService() 方法啟動(dòng)服務(wù),只能調(diào)用 Context.stopService() 方法結(jié)束服務(wù),服務(wù)結(jié)束時(shí)會(huì)調(diào)用 onDestroy() 方法。【注意:服務(wù)的生命周期方法都是在主線(xiàn)程執(zhí)行,所以不能直接在服務(wù)里面做耗時(shí)操作做,如果需要做耗時(shí)操作,應(yīng)該在服務(wù)里面開(kāi)啟子線(xiàn)程。】
(4)通過(guò) startService() 和 stopService( ) 啟動(dòng)和關(guān)閉服務(wù)。適用于服務(wù)和訪(fǎng)問(wèn)者之間沒(méi)有交互的情況。
(5)如果服務(wù)和訪(fǎng)問(wèn)者之間需要方法調(diào)用或者傳遞參數(shù),則需要使用 bindService() 和 unbindService() 方法綁定和解綁服務(wù)。
三、服務(wù)的生命周期
1、啟動(dòng)、綁定服務(wù)的生命周期
2、混合啟動(dòng)綁定服務(wù)的生命周期