Intern
Jaka jest różnica między usługą w tle a usługą w tle w Androidzie?
sobes.tech AI
Odpowiedź od AI
Różnica między zwykłą usługą w tle a usługą w tle ograniczoną (restricted) pojawiła się wraz z Androidem 8.0 (API 26).
Zwykła usługa w tle:
- Może działać nieograniczenie w tle.
- System może ją zakończyć w przypadku braku zasobów, ale może być ponownie uruchomiona, jeśli w
onStartCommand()zwróconoSTART_STICKY. - Nie wymaga widocznych powiadomień dla użytkownika (choć nie jest to najlepsza praktyka z punktu widzenia UX).
- Może zużywać znaczne zasoby baterii i CPU.
Ograniczona usługa w tle (obowiązują ograniczenia):
- Usługa uruchomiona w tle bez widocznych aktywności lub innych "list białych" (uprzywilejowanych warunków) napotyka na ograniczenia w korzystaniu z zasobów.
- Główne ograniczenia obejmują:
- Ograniczenie działania w tle: System może ją zatrzymać w krótkim czasie (zwykle kilka minut) po przejściu aplikacji w tryb tła.
- Zakaz uruchamiania nowych usług w tle: Aplikacja w tle nie może uruchamiać nowych usług w tle za pomocą
startService(). Zamiast tego powinna używaćJobSchedulerlubWorkManager. - Ograniczenie odbioru wiadomości broadcast: Niejawne broadcasty w manifeście będą ignorowane. Aplikacja musi jawnie rejestrować odbiorniki broadcast lub używać
JobScheduler/WorkManagerdo obsługi zdarzeń.
- Celem tych ograniczeń jest poprawa czasu pracy na baterii i wydajności urządzenia, ograniczając irracjonalne korzystanie z zasobów przez aplikacje w tle.
Jak usługa staje się nieograniczona (aktywny z punktu widzenia systemu):
- Aplikacja znajduje się na pierwszym planie (użytkownik aktywnie z nią wchodzi w interakcję).
- Aplikacja uruchamia widoczny serwis (foreground service), który wyświetla stałe powiadomienie użytkownikowi.
- Aplikacja wykonuje określone zadania (np. obsługa wiadomości broadcast, wykonywanie zadań
JobScheduler), które tymczasowo wyprowadzają ją z pełnego irracjonalnego stanu pracy w tle.
Główna różnica: Z Androidem 8.0 i nowszymi, serwis działający w tle bez widocznej aktywności użytkownika lub widocznego serwisu będzie ograniczony przez system pod względem dostępu do zasobów i możliwości długotrwałej pracy.