我有一個服務,我相信在前臺運行,如何檢查我的實施是否正常工作?如何確定Android服務是否在前臺運行?
12
A
回答
14
private boolean isServiceRunning(String serviceName){
boolean serviceRunning = false;
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> l = am.getRunningServices(50);
Iterator<ActivityManager.RunningServiceInfo> i = l.iterator();
while (i.hasNext()) {
ActivityManager.RunningServiceInfo runningServiceInfo = i
.next();
if(runningServiceInfo.service.getClassName().equals(serviceName)){
serviceRunning = true;
if(runningServiceInfo.foreground)
{
//service run in foreground
}
}
}
return serviceRunning;
}
如果你想知道,如果你的服務是在前臺運行只需要打開其他一些脂肪應用程序,然後檢查是否服務仍在運行,或只檢查標誌service.foreground
。
12
public static boolean isServiceRunningInForeground(Context context, Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
if (service.foreground) {
return true;
}
}
}
return false;
}
0
一個答案的更有效的變化:https://stackoverflow.com/a/36127260/1275265
public static boolean isServiceRunningInForeground(Context context, Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return service.foreground;
}
}
return false;
}
相關問題
- 1. 如何繼續在後臺運行前臺服務也在android
- 2. 服務如何在後臺運行 - Android
- 3. 如何確定類庫是否在Windows服務中運行?
- 4. 如何確定Azure服務是否正在運行
- 5. 如何正確運行後臺服務?
- 6. Android:檢查我的服務是否在後臺運行
- 7. 確定服務(例如HTTPD)是否可用/在WinCE上運行
- 8. 如何檢查硒服務器是否在後臺運行
- 9. 如何在安裝前檢查服務是否正在運行?
- 10. Android:如何在後臺服務中定期運行AsyncTask
- 11. 如何確定一臺機器是否正在運行Active Directory
- 12. 如何確定VBScript是否在RDP控制檯中運行?
- 13. 在前臺運行Windows服務
- 14. Ubuntu在前臺運行服務
- 15. 如何在前臺運行Windows任務?
- 16. 如何通過Windows命令行確定ALBD服務是否正在運行?
- 17. 如何確定Rails是從CLI,控制檯還是作爲服務器運行?
- 18. Android:如何確定Google Play服務是否已正確安裝
- 19. 確定Rails服務器是否從rake任務運行
- 20. 無法確定服務:vora目錄是否正在運行
- 21. 確定程序集是否在ASP.NET或Windows服務中運行
- 22. GPS服務在後臺運行(Android)
- 23. Android服務未在後臺運行?
- 24. Android服務不會在後臺運行
- 25. Android:始終在後臺運行服務?
- 26. 永遠在後臺運行服務..? Android
- 27. 在後臺運行的android服務
- 28. android如何檢查服務是否正在運行
- 29. 如何確定PHP是否從控制檯運行?
- 30. Android:如何確定某個活動是否已在運行?
感謝那些偉大的工作!我只需要添加這一行:serviceInForeground = runningServiceInfo.foreground; – user811985
onDestroy()中的stopForeground(true)怎麼樣?這不會阻止服務在前臺運行嗎? –
@ user811985僅供參考,有關RunningServiceInfo.foreground的文檔聲明:「如果服務*已*要求作爲前臺進程運行,則設置爲true」。也就是說,它不會告訴你android是否真的接受了前臺的服務。 http://developer.android.com/reference/android/app/ActivityManager.RunningServiceInfo.html#foreground – newbyca