前言
偶然需要使用,记录于此。
好记性不如烂笔头
正文
使用getRunningServices获取运行的服务
有时候需要盘服务是否启动,如果没有启动就需要拉起来
PS:SERVICE_PACKAGENAME和SERVICE_NAME分别是定义的包名和服务包名,这里省略。
/** * start service */ private void startService() { try { if (!isServiceRunning(SERVICE_NAME)) { Intent intent = new Intent(); intent.setComponent(new ComponentName(SERVICE_PACKAGENAME, SERVICE_NAME)); startService(intent); } } catch (Exception e) { e.printStackTrace(); } return; }
/** * @param serviceName * @return */ @SuppressWarnings("deprecation") public boolean isServiceRunning(String serviceName) { try { if (TextUtils.isEmpty(serviceName)) { return false; } ActivityManager myManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); ArrayList<ActivityManager.RunningServiceInfo> runningService = (ArrayList<ActivityManager.RunningServiceInfo>) myManager.getRunningServices(Integer.MAX_VALUE); for (int i = 0; i < runningService.size(); i++) { if (runningService.get(i).service.getClassName().toString() .equals(serviceName)) { return true; } } } catch (Exception e) { e.printStackTrace(); } return false; }
注意事项
在实际测试中,Android 9.0的设备上测试。
- 系统应用 :可以获取运行的Service
- 非系统应用 :无法获取运行的Service
getRunningServices()说明废弃了,同时也说明,Android O后不在提供给第三方应用。
参考文章
© 版权声明