Android判断service是否在运行

2025-05-09 16:32:38
推荐回答(1个)
回答1:

获取正在运行的所有服务,然后进行判断,如果是自己的service,一般都是提前设置一个标识,直接判断标识位即可;

获取正在运行的所有服务:
PackageManager pm = contex.getPackageManager();

ActivityManager am = (ActivityManager) contex.getSystemService(ACTIVITY_SERVICE);
// 得到系统安装的所有程序包的PackageInfo对象

List packs = pm.getInstalledPackages(0);
List listSer= am.getRunningServices(30);
// 获取正在运行的服务
for (PackageInfo p : packs) {
HashMap map2 = new HashMap();
for (ActivityManager.RunningServiceInfo ra : listSer) {
if (ra.process.equals(p.applicationInfo.packageName)) {
// 获得该进程的内存
int[] myMempid = new int[] { ra.pid };
Debug.MemoryInfo[] memoryInfo = am
.getProcessMemoryInfo(myMempid);
int memSize = memoryInfo[0].dalvikPrivateDirty;
map2.put("size", "内存为:" + memSize + "kb");

map2.put("icon", p.applicationInfo.loadIcon(pm));// 图标
map2.put("appName", p.applicationInfo.loadLabel(pm));// 应用程序名称
map2.put("packageName", "所在包名:"
+ p.applicationInfo.packageName);// 应用程序包名
System.out.println("pi.applicationInfo.packageName===="+p.applicationInfo.packageName);

items.add(map2);
}

}
}
希望对你能有所帮助。