全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

android中判断服务或者进程是否存在实例

1.判断进程是否存在

 /**
  * 判断是否在主进程,这个方法判断进程名或者pid都可以,如果进程名一样那pid肯定也一样
  *
  * @return true:当前进程是主进程 false:当前进程不是主进程
  */
 public boolean isUIProcess() {
  ActivityManager am = ((ActivityManager) getSystemService(Context.ACTIVITY_SERVICE));
  List<ActivityManager.RunningAppProcessInfo> processInfos = am.getRunningAppProcesses();
  String mainProcessName = getPackageName();
  int myPid = android.os.Process.myPid();
  for (ActivityManager.RunningAppProcessInfo info : processInfos) {
   if (info.pid == myPid && mainProcessName.equals(info.processName)) {
    return true;
   }
  }
  return false;
 }

2.判断服务是否存在

 /**
  * 判断service是否已经运行
  * 必须判断uid,因为可能有重名的Service,所以要找自己程序的Service,不同进程只要是同一个程序就是同一个uid,个人理解android系统中一个程序就是一个用户
  * 用pid替换uid进行判断强烈不建议,因为如果是远程Service的话,主进程的pid和远程Service的pid不是一个值,在主进程调用该方法会导致Service即使已经运行也会认为没有运行
  * 如果Service和主进程是一个进程的话,用pid不会出错,但是这种方法强烈不建议,如果你后来把Service改成了远程Service,这时候判断就出错了
  *
  * @param className Service的全名,例如PushService.class.getName()
  * @return true:Service已运行 false:Service未运行
  */
 public boolean isServiceExisted(String className) {
  ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
  List<ActivityManager.RunningServiceInfo> serviceList = am.getRunningServices(Integer.MAX_VALUE);
  int myUid = android.os.Process.myUid();
  for (ActivityManager.RunningServiceInfo runningServiceInfo : serviceList) {
   if (runningServiceInfo.uid == myUid && runningServiceInfo.service.getClassName().equals(className)) {
    return true;
   }
  }
  return false;
 }

注意:

上面判断Service是否存在,用的uid和Service的类全名,网上我查到的资料,全部是用的pid,在Service和主进程是一个进程的时候,pid没有问题,但是如果Service是远程Service,和主进程就不是一个进程了,这时候用pid和Service的类全名进行判断就会判断错误

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# android  # 判断进程存在  # 进程是否存在  # 判断进程  # 详解android与服务端交互的两种方式  # 使用pyecharts在jupyter notebook上绘图  # Android中实现OkHttp上传文件到服务器并带进度  # Android读取服务器图片的三种方法  # android选择视频文件上传到后台服务器  # Android实现调用系统图库与相机设置头像并保存在本地及服务器  # Android判断后台服务是否开启的两种方法实例详解  # 是一个  # 是否存在  # 这时候  # 就会  # 如果你  # 也会  # 就不  # 错了  # 能有  # 要找  # 大家多多  # 改成了  # 判断是否  # 法会  # 这种方法  # 只要是  # 网上  # Context  # ACTIVITY_SERVICE  # mainProcessName 


相关文章: 如何快速生成可下载的建站源码工具?  C#如何序列化对象为XML XmlSerializer用法  想学网站制作怎么学,建立一个网站要花费多少?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  如何快速辨别茅台真假?关键步骤解析  建站之星如何助力网站排名飙升?揭秘高效技巧  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  宝塔建站后网页无法访问如何解决?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  盐城做公司网站,江苏电子版退休证办理流程?  ,如何利用word制作宣传手册?  建站主机选购指南:核心配置与性价比推荐解析  ,在苏州找工作,上哪个网站比较好?  魔方云NAT建站如何实现端口转发?  建站之星如何快速解决建站难题?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  建站之星下载版如何获取与安装?  建站之星安装后界面空白如何解决?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  如何在橙子建站上传落地页?操作指南详解  PHP 500报错的快速解决方法  建站之星与建站宝盒如何选择最佳方案?  如何通过西部数码建站助手快速创建专业网站?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  独立制作一个网站多少钱,建立网站需要花多少钱?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  建站之星后台管理如何实现高效配置?  移民网站制作流程,怎么看加拿大移民官网?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  制作电商网页,电商供应链怎么做?  黑客如何通过漏洞一步步攻陷网站服务器?  如何在阿里云部署织梦网站?  如何快速查询域名建站关键信息?  建站主机服务器选型指南与性能优化方案解析  如何快速生成橙子建站落地页链接?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  如何在腾讯云服务器快速搭建个人网站?  html制作网站的步骤有哪些,iapp如何添加网页?  高防服务器租用如何选择配置与防御等级?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  如何在IIS中新建站点并配置端口与IP地址?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  网站制作企业,网站的banner和导航栏是指什么?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  ,网站推广常用方法?  建站主机功能解析:服务器选择与快速搭建指南 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。