一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - android中判斷服務或者進程是否存在實例

android中判斷服務或者進程是否存在實例

2020-10-31 23:41o動感超人o Java教程

本篇文章主要介紹了android中判斷服務或者進程是否存在實例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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的類全名進行判斷就會判斷錯誤

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲国产高清一区二区三区 | 欧美性xxx狂流白浆 欧美性f | 成年人免费看的视频 | 91香蕉国产在线观看免费永久 | 91.prom在线观看国产 | 黑人与老女人做受 | 爆操女友| 欧美亚洲国产另类 | 日本不卡视频免费 | 日本阿v精品视频在线观看 日本xxx片免费高清在线 | 亚洲精品无码不卡在线观看 | 九九热视频免费观看 | 91外围| 日韩欧美一区二区三区免费观看 | 99久久一区二区精品 | 亚洲成人一区 | 韩国三级在线高速影院 | 黑人巨大vs北条麻妃在线 | 毛片免| 欧美色图亚洲天堂 | 无人区在线观看免费观看 | 大肥婆丰满大肥奶bbw肥 | 日本高清免费观看 | 性关系免费视频 | daring国家队在线观看樱花动漫 | 亚洲伦理视频 | 夫妇野外交换激情 | 国产一区精品 | 亚洲天堂岛国片 | 男人影院天堂网址 | 美女胸又大又黄又www小说 | 国产精品久久久久久久久免费观看 | tube性睡觉hd| 日本精a在线观看 | 国产亚洲精品一区二区在线观看 | 国产成人91高清精品免费 | 丝袜足控免费网站xx动漫漫画 | 特级淫片大乳女子高清视频 | 91精品免费国产高清在线 | 放荡护士玩3p口述 | 99视频精品免费99在线 |