Mam usługę, która, jak sądzę, działa na pierwszym planie, Jak sprawdzić, czy moja implementacja działa?Jak ustalić, czy usługa Android działa na pierwszym planie?
12
A
Odpowiedz
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;
}
Jeśli chcesz wiedzieć, czy usługa jest uruchomiona w planie tylko otworzyć niektóre inne aplikacje tłuszczu, a następnie sprawdzić, czy usługa jest nadal działa lub po prostu sprawdzić flagę 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
Bardziej wydajny wariant odpowiedzi: 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;
}
Powiązane problemy
- 1. Jak zostać powiadomionym, gdy zmiana na pierwszym planie (na górze)
- 2. Powiadomienia Firebase na pierwszym planie
- 3. Jak utworzyć zadanie na pierwszym planie?
- 4. Jak zmusić okno Mac na pierwszym planie?
- 5. Jak sprawdzić czy aplikacja jest na pierwszym planie z usługi?
- 6. Wymuszenie mojej aktywności na pierwszym planie?
- 7. Java, uruchom inną aplikację na pierwszym planie
- 8. applicationReceivedRemoteMessage wykonuje się tylko na pierwszym planie.
- 9. Jak przybliżyć program działający w tle na pierwszym planie
- 10. jak ustawić okno dialogowe choose.file() na pierwszym planie
- 11. Wyświetl powiadomienie push w polu alertu, gdy aplikacja działa na pierwszym planie.
- 12. Nowe okno GTK 3 na pierwszym planie na OSX
- 13. Lokalne powiadomienie na pierwszym planie w iPhone SDK
- 14. Podstawienie polecenia Bash ($ (...)) wymuszanie procesu na pierwszym planie
- 15. Jak uruchomić operacje w tle, gdy aplikacja na iOS znajduje się na pierwszym planie
- 16. Jak sprawdzić, czy aplikacja jest na pierwszym planie lub w tle?
- 17. Jak można wykryć, czy strona jest w tle lub na pierwszym planie z jquery/javascript?
- 18. Czy istnieje prywatny interfejs API, dzięki któremu można wykryć bieżącą aplikację na pierwszym planie na iOS?
- 19. Jak ustalić, czy kod Swift działa na XCode Playground
- 20. Jak ustalić, na którym procesorze działa wątek?
- 21. Jak wyświetlić zielony pasek stanu podwójnej wysokości (In-Call) w aplikacji na pierwszym planie na urządzeniu?
- 22. Sprawdzanie, czy działa Android.
- 23. Sprawdź, czy działa usługa Windows?
- 24. node.js: Jak na tarło wolnostojący dziecko na pierwszym planie i wyjściem
- 25. Jak obsługiwać powiadomienia Firebase na tle, a także na pierwszym planie?
- 26. Jak ustalić platformę, na której działa bieżąca aplikacja w LibGDX?
- 27. Jak utrzymać aplikację na pierwszym planie przez całą dobę, 7 dni w tygodniu?
- 28. iOS NSNotificationCenter, aby sprawdzić, czy aplikacja pochodzi z tła na pierwszym planie
- 29. Android: jak sprawdzić, czy aplikacja działa w tle
- 30. Usługa Android nie działa jako singleton
Dzięki który działał świetnie! Właśnie dodałem tę linię: serviceInForeground = runningServiceInfo.foreground; – user811985
Co powiesz na stopForeground (true) w onDestroy()? Czy to nie powstrzymałoby służby przed uruchomieniem na pierwszym planie? –
@ user811985 FYI, dokumentacja dotycząca stanów RunningServiceInfo.foreground: "Ustawiona na true, jeśli usługa * poprosiła *, aby działała jako proces pierwszego planu.". Oznacza to, że nie mówi ci, czy Android rzeczywiście przyjął usługę na pierwszy plan. http://developer.android.com/reference/android/app/ActivityManager.RunningServiceInfo.html#foreground – newbyca