今天做项目的时候,有一个地方需要判断Service是否存在而适时的发送广播给Service。
查询了一些资料,都有问题,然后我在一个我认为相对满意的方法上进行了修改,然后测试,成功。
下面分享出来。
public static boolean isServiceWork(Context context,String className){
ActivityManager myManager=(ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
ArrayList<RunningServiceInfo> runningService = (ArrayList<RunningServiceInfo>) myManager.getRunningServices(30);
for(int i = 0 ; i<runningService.size();i++){
if(runningService.get(i).service.getClassName().toString().equals(className)){
return true;
}
}
return false;
}
这其中要特别注意的是className这个参数的传递,也就是Service的名称,一定是包含包名的,不能只写类名。使用方法,如下所示:
isServiceing = isServiceWork(this, "com.yao.dage.FloatingService");