Android中判断Service是否启动了

摘抄  2021年4月27日 pm12:28发布4年前 (2021)更新 城堡大人
96 0 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、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

[摘]Java去除字符串中的空格

前言这篇文件是关去除空格符的,之前也想整理一下,但迟迟没有,因此今天有空摘抄于此。下面只是用了Java提供的两种方式,一种只是去除文末或开头的trim(),另外一种是用replaceAll()正则表达式匹配。本文摘抄,具体原文链接在文末。正文String.trim()String.tr...

MediaPlayer JNI层介绍

前言之前的《MediaPlayer java层介绍》只是介绍了java中的常用方法,对于JNI层的调用没有进一步介绍,今天就介绍一下JNI层。个人流水账哈,推荐看其他人的,我这只是自己的跟踪记录涉及的代码:frameworks\base\media\java\android\media\M...

[摘]车载MediaSession框架理解

前言本文内容主要介绍Android车载多媒体开发MediaSession框架知识,而且内容是阅读参考文的笔记。记录于此,方便自己查阅。好记性不如烂笔头。正文这里摘抄我自己想了解的,而且只是记录一下,有兴趣的还是看原文,多谢理解。Android AutoAndroid Auto就是...

Android Jetpack - Navigation的简单使用

前言Android Jetpack的Navigation确实好用,这里就简单记录一下,方便自己查阅。这个出来了很久了,但也就偶尔用用,用完就忘了,正应了微信之父张小龙的名言[用完即走]。PS: 好记性不如烂笔头。正文Jetpack的导航组件——Navigation,就可以很方便的管理各f...

龙应台:中国人,你为什么不生气?

在昨晚的电视新闻中,有人微笑着说:"你把检验不合格的厂商都揭露了,叫这些生意人怎么吃饭?"我觉得恶心,觉得愤怒。但我生气的对象不是这位人士,而是台湾1800万的懦弱自私的中国人。我所不能了解的是:中国人,你为什么不生气?包德莆的《苦海余生》英文原本中有一段他在台湾的经验:他看见一辆车子把小孩子...

MediaScanner源码JNI介绍2

前言接上文《MediaScanner源码JNI介绍》介绍register_android_media_MediaScanner的registerNativeMethods()注册是在android_media_MediaPlayer.cpp中JNI_OnLoad,上次有个疑惑,哪何时加载JNI_...