Czy aplikacje na iOS działają w tle?

12

Powiedzmy, że jeśli zainstaluję kilkanaście gier i narzędzi na iPhonie, a następnie zainstaluję aplikacje czatu, takie jak WhatsApp, WeChat, Line, a następnie

  1. Czy po ponownym uruchomieniu iPhone'a wszystkie te aplikacje mogą się również uruchomić i mogą zająć cenny czas procesora i zasoby systemowe?

  2. Co się stanie, jeśli uruchomię aplikację, a następnie dwukrotnie dotknij przycisku Strona główna, a następnie wysuń aplikację (aby ją zamknąć). Czy teraz lub później może działać w tle lub jego część?

  3. Ponieważ wszystkie wiadomości WhatsApp, WeChat, Line i Facebook powiadamiają mnie o nowych wiadomościach, wygląda na to, że będą one działać, gdy ponownie uruchomię iPhone'a. Czy używają mojego procesora w tle? Wygląda też na to, że nawet jeśli wyłączę Odświeżanie aplikacji w Ustawieniach, aplikacje mogą nadal działać w tle . Czy to prawda?

Jednym wielkim problemem jest to, że jeśli zainstaluję wszystkie odmiany Angry Birds, kilka kasynowych gier ruletkowych i wszystkie wersje Cut the Rope i nie zawracam sobie głowy ich usunięciem (telefon ma 128 GB pamięci). Czy zatem wszystkie te aplikacje będą mogły działać w czasie restartu iPhone'a, czy po prostu losowo i zajmą czas procesora i zasoby systemowe (np. RAM)?

太極 者 無極 而 生
źródło
1
Opublikowałem bardzo długi przewodnik na temat wszystkiego, co tu warto wiedzieć, mam nadzieję, że to naprawdę ci pomoże!
owlswipe
Czy moja odpowiedź pomogła? Proszę, zaakceptuj to lub powiedz mi, co jest z nią nie tak, żebym mógł to poprawić! :)
owlswipe

Odpowiedzi:

26

Apple ma bardzo surowe wytyczne dotyczące tego, jak i kiedy aplikacje mogą działać w tle.

Poniżej przedstawiono jedyne scenariusze, w których aplikacja iOS innej firmy może korzystać z procesora w tle.

Pobieranie w tle

Każda aplikacja może korzystać z funkcji „Pobieranie w tle” (czyli odświeżania aplikacji w tle), aby pobierać treści w tle przez kilka sekund, mniej więcej raz dziennie (w ramach czasowych regulowanych przez system iOS, poza kontrolą programisty). Pobieranie w tle zajmuje bardzo mało baterii i procesora i jest używane głównie przez aplikacje wiadomości / pogody / mediów społecznościowych / poczty do aktualizacji kanału, aby po otwarciu aplikacji nie był całkowicie nieaktualny.

Audio, Voice over IP, komunikacja Bluetooth

Jeśli aplikacja odtwarza dźwięk w tle (przez AirPlay lub przez głośniki telefonu), iOS pozwala mu działać w tle, dopóki nie przestanie odtwarzać muzyki; jeśli aplikacja pozwala na wykonywanie połączeń telefonicznych opartych na danych (takich jak Whatsapp lub Skype) w tle, może pozostać aktywna, używając procesora przez czas trwania połączenia; a jeśli aplikacja komunikuje się z akcesoriami Bluetooth (np. aplikacja Pebble komunikująca się z Pebble Smartwatch), może pozostawać w stanie czuwania na stałe w tle.

Pobieranie kiosku, zdalne powiadomienia

Aplikacje Kiosku (o ile są zatwierdzone przez Apple jako ważna organizacja wiadomości i wyświetlane w części App Store w Kiosku) mogą pobierać nowe treści w tle; każda aplikacja (np. The New York Times), która musi wyświetlać powiadomienia generowane poza aplikacją (na przykład powiadomienia o najświeższych wiadomościach), może pozostać w tle, aby otrzymywać takie „zdalne” powiadomienia.

Aktualizacje lokalizacji

Jeśli zezwolisz aplikacji na „zawsze” korzystanie z Twojej lokalizacji (tj. W tle), może ona być aktywna w dowolnym momencie w tle. Aplikacje takie jak Facebook, Znajdź znajomych i inni używają tego do aktualizowania informacji związanych z lokalizacją, chociaż inne aplikacje mogą go używać, aby potajemnie używać go do wykonywania zadań w tle (ale tylko wtedy, gdy zezwalasz im na dostęp do Twojej lokalizacji).


Bardzo błędne jest to, że „przesuwając się” na app zabić zatrzymuje go od działających w tle: to jest całkowicie nieprawdziwe. Aplikacje, które mają jeden z powyższych siedmiu powodów, aby działać w tle, mogą działać w tle, niezależnie od tego, czy „przesuwasz” je w górę, a aplikacje, które nie mają jednego z tych siedmiu powodów, nie mogą działać, gdy nie są na ekranie, nawet jeśli ich nie zabijesz.

Innym nieporozumieniem (które wydaje się mieć!) Jest to, że wyłączenie „Odświeżania aplikacji w tle” spowoduje, że aplikacja nie będzie działać w tle; w rzeczywistości wyłącza to aplikację z pobierania w tle, ale może działać w tle, jeśli ma jeden z pozostałych sześciu powodów, niezależnie od przełączania Odświeżania aplikacji w tle.


Więc czy aplikacje zainstalowane w tle przy użyciu procesora, pamięci, baterii lub danych? Możesz łatwo się dowiedzieć! Przejdź do Settingsswojego iPhone'a, znajdź Batterysekcję i rzuć okiem. Jeśli nazwa aplikacji pokazuje „Aktywność w tle”, oznacza to, że używa procesora w tle; w przeciwnym razie nic nie robi w tle.

Oto przykładowy zrzut ekranu:

wprowadź opis zdjęcia tutaj

Na tym iPhonie podcasty działają w tle, ale żadna inna aplikacja tego nie robi. Przejście do ustawień baterii to prosty sposób na sprawdzenie, czy w tle działa Angry Birds.


Tak więc, aby bezpośrednio odpowiedzieć na twoje pytania:

Czy po ponownym uruchomieniu iPhone'a wszystkie te aplikacje mogą się również uruchomić i mogą zająć cenny czas procesora i zasoby systemowe?

Tylko jeśli są one specjalnie skonfigurowane do działania w tle, możesz sprawdzić, czy robią to w ustawieniach baterii telefonu iPhone.

Co się stanie, jeśli uruchomię aplikację, a następnie dwukrotnie dotknij przycisku Strona główna, a następnie wysuń aplikację (aby ją zamknąć). Czy teraz lub później może działać w tle lub jego część?

Tak. Na przykład, jeśli Facebook korzysta z usług lokalizacyjnych (tak jak ma to miejsce), wówczas przesunięcie w górę, aby zabić aplikację Facebook, nie powstrzyma jej przed użyciem Twojej lokalizacji w tle, a podczas gdy używa Twojej lokalizacji, może wykonać prawie każde inne zadanie w tło też.

Ponieważ wszystkie wiadomości WhatsApp, WeChat, Line i Facebook powiadamiają mnie o nowych wiadomościach, wygląda na to, że będą one działać, gdy ponownie uruchomię iPhone'a. Czy używanie mojego procesora jest w tle? Wygląda też na to, że nawet jeśli wyłączę Odświeżanie aplikacji w Ustawieniach, aplikacje mogą nadal działać w tle. Czy to prawda?

Whatsapp, WeChat, Line, Hangouts, FB Messenger i inne aplikacje do czatowania korzystają z remote notificationsmożliwości sprawdzania nowych wiadomości w tle od czasu do czasu. Jest to oczekiwane zachowanie (możesz sprawdzić, ile robią, sprawdzając zużycie baterii w aplikacji, ponownie w ustawieniach Baterii) i nie powinno nadmiernie rozładowywać baterii. I rzeczywiście, wyłączenie odświeżania aplikacji dla tych aplikacji nie przyniesie żadnego efektu, ponieważ aplikacje używają zdalnych powiadomień, a nie pobierania w tle, aby działać w tle.


TL; DR: Aplikacje mogą korzystać z zasobów telefonu w tle, możesz zobaczyć, ile robią w Settings-> Battery.


Źródła informacji:

owlswipe
źródło
2
to całkiem dobre ... czy możesz podać jakieś referencje / źródła na ten temat?
太極 者 無極 而 生
2
@ 太極 者 無極 而 生 Wszystkie informacje pochodzą z mojej osobistej wiedzy jako programisty iOS, ale dodałem także kilka źródeł na dole mojej odpowiedzi.
owlswipe
1
Doskonała odpowiedź. Ciekawostką było to, że Apple wyłączył zdalne powiadomienia o zamkniętych aplikacjach w systemie iOS 7. Ale ponieważ ludzie, którzy kompulsywnie odrzucali wszystkie swoje aplikacje, skarżyli się na nieotrzymywanie powiadomień, co zostało ponownie wprowadzone w iOS 7.1 lub 7.2.
2
@Phong Podoba mi się, nie wiedziałem o tym! Dzięki: D.
owlswipe
3
Nie masz racji, że wymuszanie rezygnacji nie ma związku z tym, czy aplikacje mogą korzystać z wykonywania w tle. Apple na BE : „[iOS] nie uruchamia ponownie aplikacji po ... wymuszeniu wyjścia przez użytkownika. Jednym wyjątkiem są aplikacje lokalizacyjne ... w iOS 8 i nowszych ... [W przeciwnym razie] użytkownik musi [it] uruchomić jawnie lub ponownie uruchomić ... zanim aplikacja [zostanie] automatycznie uruchomiona w tle przez [iOS] ”.
tubedogg