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

2025-05-29 0 76

1.判断进程是否存在

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17
/**

* 判断是否在主进程,这个方法判断进程名或者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.判断服务是否存在

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20
/**

* 判断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的类全名进行判断就会判断错误

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

原文链接:http://www.jianshu.com/p/469400940ee0

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 android中判断服务或者进程是否存在实例 https://www.kuaiidc.com/116003.html

相关文章

发表评论
暂无评论