Android中判断Service是否启动了

摘抄 3xcn.com@站长2021年4月27日 pm12:28发布3年前 (2021)更新
0
导航号,我的单页导航
目录

前言

偶然需要使用,记录于此。

好记性不如烂笔头

正文

使用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的设备上测试。

  1. 系统应用 :可以获取运行的Service
  2. 非系统应用 :无法获取运行的Service

getRunningServices()说明废弃了,同时也说明,Android O后不在提供给第三方应用。

参考文章

  1. Android中判断服务是否开启

版权声明 1、 本站名称: 91易搜
2、 本站网址: https://www.91es.com/
3、 本站文章: 部分来源于网络,仅供站长学习和参考,若侵权请留言
导航号,我的单页导航

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

暂无评论...