Android中判断Service是否启动了

摘抄  2021年4月27日 pm12:28发布4年前 (2021)更新 91es.com站长
76 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、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

暂无评论

暂无评论...

随机推荐

Android多线程介绍

前言记录一下Android主线程,子线程等相关知识。我们知道Android3.0后如果在主线程进行网络请求是会抛出异常的,这是为了避免主线程被耗时操作阻塞从而导致ANR。因此有必要学习一下子线程相关知识。正文搞懂什么是线程前,也需要搞懂什么是进程。什么是进程进程是操作系统结构的基础。...

CountDownTimer音量值淡入淡出

前言有时候播放开始播放和暂停时,需要做一个淡入淡出的效果,要不然急速暂停或播放,容易出现尖锐的杂音。正文显示对MediaPlayer播放和暂停时音量淡入和淡出代码片段。隐藏内容!付费阅读后才能查看!¥1 ¥3多个隐藏块只需支付一次付费阅读

[代码片段]Android像素转换工具类

前言移动项目需要根据设备进行适配,这个还是很有用的,摘抄于此,方便自己查阅。正文public class DensityUtil { public static int dip2px(float dpValue) { return (int) (dpValue * R...

TextView.setWidth()竟然失效了

前言TextView.setWidth()失效(无作用),其实好奇,既然没作用,为啥要预留这个方法呢?记录一下,方便自己查阅。正文既然要刨根问底,就需要看源码TextView。看了一下源码TextView.setWidth()//[来自谷歌翻译]//将 TextView 的宽度设置为...

SQLite的limit用法

前言本文记录一下查询数据库中limit的使用,记录于此,方便自己查阅。正文命令行limit的使用SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset 具体看如下实例展示。隐藏内容!付费阅读后才能查看!¥2 ¥3多个隐...

adb启动service等

一:启动serviceadb shell am startservice com.125la.test/.myService二:启动Activityadb shell am start com.125la.test/.MainActivity还可以带参数,我在Android 9.0测试...