Czy zamknięte aplikacje (tzn. Nie działające lub zawieszone) mają dostęp do aplikacji w tle odświeżającej lub modyfikującej stan programu w celu uzyskania dostępu do odświeżania aplikacji w tle? I odwrotnie, jeśli odświeżanie aplikacji w tle jest wyłączone, czy aplikacje mogą uzyskać dostęp tylko do danych na pierwszym planie?
Przykład 1: Aplikacje czatowe nadal otrzymują powiadomienia, jeśli znajdują się w stanie „nie działa”. Jak oni to robią?
Przykład 2: Jeśli zapisuję notatkę (przy wyłączonym odświeżaniu aplikacji w tle) i wracam do ekranu głównego przed zakończeniem zapisywania notatki, czy będzie ona nadal zapisywana?
Z dokumentów systemu iOS cykl życia aplikacji jest przedstawiony poniżej.
ios
multitasking
y3sh
źródło
źródło
Odpowiedzi:
Nie należy mylić Zawieszone z Nie działa. Zawieszone oznacza, że aplikacja jest nadal w pamięci, ale poza tym nie wykorzystuje żadnych zasobów. Brak działania oznacza, że aplikacja w ogóle nie jest w pamięci z powodu mimowolnego zakończenia, ponieważ system wymagał zasobów dla aplikacji pierwszego planu lub ponieważ użytkownik wymusza zamknięcie aplikacji.
Odświeżanie aplikacji w tle (BAR) = / = „Tło”, jak pokazano na tym schemacie:
BAR umożliwia aplikacjom aktualizowanie treści w bardzo ograniczonym zakresie, zgodnie z harmonogramem ustawionym i egzekwowanym przez system iOS, zazwyczaj około raz dziennie.
Stan tła pokazany na tym diagramie to Wykonywanie w tle, które umożliwia aplikacjom wykonywanie pewnych zadań w tle. Wyłączenie BAR nie ma wpływu na aplikacje, które mogą korzystać z wykonywania w tle.
Wykonywanie tła jest zazwyczaj dozwolone tylko wtedy, gdy aplikacja nie została wymuszona przez użytkownika (wyjątek stanowią „aplikacje lokalizacyjne”). Aplikacje w dowolnym stanie, w tym Zakończone, mogą używać Wykonywania w tle, jeśli spełniają poniższe wymagania. W razie potrzeby zostaną ponownie uruchomione przez system w tle (ponownie, z zastrzeżeniem ograniczeń wymuszonego zakończenia pracy powyżej). Widzieć moja odpowiedź na podobne pytanie :
W odpowiedzi powiązanej nie ma powiadomień. Powiadomienia nielokalne są generowane gdzieś na serwerze i przesyłane do urządzenia za pośrednictwem Apple Push Notifications (APN). Akt otrzymania powiadomienia nie wskazuje, że sama aplikacja zrobiła cokolwiek.
W przykładzie z notatką, gdy aplikacja notatki przejdzie do tła, otrzyma krótki czas na zapisanie stanu. Jeśli trwa proces zapisywania notatki i nie może go ukończyć w dozwolonym czasie, może poprosić o rozszerzenie, a następnie powiadomić system, gdy zostanie zakończony, aby aplikacja mogła zostać zawieszona. Ten rodzaj pracy w tle może być używany przez dowolną aplikację, a nie tylko te, które należą do kategorii wymienionych powyżej.
źródło