這個(gè)也是昨天學(xué)習(xí)的,做下總結(jié)。
檢查服務(wù)是否開(kāi)啟要寫(xiě)成一個(gè)工具類,方便使用,傳服務(wù)的名字返回Boolean值,當(dāng)然,因?yàn)樾枰€要傳一個(gè)上下文context。
說(shuō)一下這個(gè)工具類的幾個(gè)關(guān)鍵點(diǎn):
1.方法要傳context和serviceName,context用來(lái)getSystemService()操作獲得ActivityManager。注意,這個(gè)方法參數(shù)要用大寫(xiě)的Context中的參數(shù):Context.ACTIVITY_SERVICE,要不然會(huì)出錯(cuò),還不知道哪錯(cuò)的,花了我10分鐘的時(shí)間才知道,謹(jǐn)記下。
2.ActivityManager實(shí)例可以getRunningService()方法,參數(shù)是獲得服務(wù)最大數(shù)目,一般100就好。
3.上面的方法返回的事一個(gè)List,要對(duì)他進(jìn)行遍歷,獲的每一個(gè)服務(wù)的名字,在比較,返回結(jié)果。
下面是具體代碼。
import java.util.List;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningServiceInfo;
import android.app.Service;
import android.content.Context;
public class ServiceStateUtiles {
public static Boolean isServiceRunning(Context context, String serviceName) {
//獲取服務(wù)方法 參數(shù) 必須用大寫(xiě)的Context?。。?/P>
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<runningserviceinfo> infos = am.getRunningServices(100);
for (RunningServiceInfo info : infos) {
String className = info.service.getClassName();
if(serviceName.equals(className))
return true;
}
return false;
}
}</runningserviceinfo>
更多信息請(qǐng)查看IT技術(shù)專欄