android中判斷服務(wù)或者進(jìn)程是否存在實(shí)例
1.判斷進(jìn)程是否存在
/**
* 判斷是否在主進(jìn)程,這個(gè)方法判斷進(jìn)程名或者pid都可以,如果進(jìn)程名一樣那pid肯定也一樣
*
* @return true:當(dāng)前進(jìn)程是主進(jìn)程 false:當(dāng)前進(jìn)程不是主進(jìn)程
*/
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.判斷服務(wù)是否存在
/**
* 判斷service是否已經(jīng)運(yùn)行
* 必須判斷uid,因?yàn)榭赡苡兄孛腟ervice,所以要找自己程序的Service,不同進(jìn)程只要是同一個(gè)程序就是同一個(gè)uid,個(gè)人理解android系統(tǒng)中一個(gè)程序就是一個(gè)用戶
* 用pid替換uid進(jìn)行判斷強(qiáng)烈不建議,因?yàn)槿绻沁h(yuǎn)程Service的話,主進(jìn)程的pid和遠(yuǎn)程Service的pid不是一個(gè)值,在主進(jìn)程調(diào)用該方法會(huì)導(dǎo)致Service即使已經(jīng)運(yùn)行也會(huì)認(rèn)為沒(méi)有運(yùn)行
* 如果Service和主進(jìn)程是一個(gè)進(jìn)程的話,用pid不會(huì)出錯(cuò),但是這種方法強(qiáng)烈不建議,如果你后來(lái)把Service改成了遠(yuǎn)程Service,這時(shí)候判斷就出錯(cuò)了
*
* @param className Service的全名,例如PushService.class.getName()
* @return true:Service已運(yùn)行 false:Service未運(yùn)行
*/
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的類全名,網(wǎng)上我查到的資料,全部是用的pid,在Service和主進(jìn)程是一個(gè)進(jìn)程的時(shí)候,pid沒(méi)有問(wèn)題,但是如果Service是遠(yuǎn)程Service,和主進(jìn)程就不是一個(gè)進(jìn)程了,這時(shí)候用pid和Service的類全名進(jìn)行判斷就會(huì)判斷錯(cuò)誤
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(40)
下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你2021-07-07
Springboot使用POI進(jìn)行excel文件的導(dǎo)出與下載方式
這篇文章主要介紹了Springboot使用POI進(jìn)行excel文件的導(dǎo)出與下載方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
java學(xué)習(xí)之利用TCP實(shí)現(xiàn)的簡(jiǎn)單聊天示例代碼
這篇文章主要給大家介紹了關(guān)于java學(xué)習(xí)筆記之利用TCP實(shí)現(xiàn)的簡(jiǎn)單聊天的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12
Java去掉小數(shù)點(diǎn)后面無(wú)效0的方案與建議
當(dāng)前小數(shù)點(diǎn)后面的位數(shù)過(guò)多的時(shí)候,多余的0沒(méi)有實(shí)際意義,下面這篇文章主要給大家介紹了關(guān)于Java去掉小數(shù)點(diǎn)后面無(wú)效0的方案與建議,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
Java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單FTP軟件 FTP軟件效果圖預(yù)覽之上傳功能(3)
這篇文章主要為大家詳細(xì)介紹了Java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單FTP軟件,F(xiàn)TP軟件效果圖預(yù)覽之上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
IntelliJ IDEA中查看文件內(nèi)所有已聲明的方法(類似eclipse的outline)
今天小編就為大家分享一篇關(guān)于IntelliJ IDEA中查看文件內(nèi)所有已聲明的方法(類似eclipse的outline),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10
解決mybatis中order by排序無(wú)效問(wèn)題
這篇文章主要介紹了解決mybatis中order by排序無(wú)效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
JAVA 對(duì)象創(chuàng)建與對(duì)象克隆
這篇文章主要介紹了JAVA 對(duì)象創(chuàng)建與對(duì)象克隆,new 創(chuàng)建、反射、克隆、反序列化,克隆它分為深拷貝和淺拷貝,通過(guò)調(diào)用對(duì)象的 clone方法,進(jìn)行對(duì)象的克隆,下面來(lái)看看文章的詳細(xì)內(nèi)容吧2022-02-02

