2013-03-20 17 views
5

Jeśli aplikacja zakończyła się ~ 10 min w tle, będzie działać w trybie zawieszonym. Aplikacja może zostać zabity przez poniższe dwa sposoby:Jak możemy sprawdzić, czy aplikacja ios została zabita przez użytkownika lub iOS

  1. iOS mogą zabić aplikacji: W tym scenariuszu „applicationWillTerminate” zadzwoni.

  2. Użytkownik może zabić aplikacje wyraźnie używając wielozadaniowej UI (dwukrotnie klikając przycisk Home i naciśnięcie - (czerwony przycisk)).

W drugim scenariuszu, jak możemy dostać tę aplikację zabity przez użytkownika?

sprawdzić poniżej pytanie, ale nie owocny wynik: App killed by user

+3

ustawić flagę NSUserDefaults po wykonaniu zadania w tle. Jeśli flaga nie jest obecna przy następnym uruchomieniu, Twoja aplikacja została zabita, zanim dotrze do końca zadania w tle. –

Odpowiedz

13

Jeśli aplikacja jest w stanie zawieszenia applicationWillTerminate nigdy się nazywa niezależnie kto zabił iOS lub użytkownika aplikacji.

Twój applicationWillTerminate zadzwoni tylko wtedy, gdy aplikacja jest w tle i zostanie zabity (przez iOS lub użytkownika) tło termin oznacza, że ​​jest uruchomiony w tle nie jest w stanie zawieszenia.

Wystarczy przeczytać this reference

applicationWillTerminate: -Lets wiesz, że Twoja aplikacja jest zakończone. Ta metoda nie jest wywoływana, jeśli Twoja aplikacja jest zawieszona.

Oto tabela z różnymi stanami enter image description here

Background - Aplikacja jest w tle i kodu wykonującego. Większość aplikacji wchodzi w ten stan krótko po drodze do zawieszenia. Jednak aplikacja żądająca dodatkowego czasu wykonania może pozostać w tym stanie przez pewien czas. Ponadto aplikacja uruchamiana bezpośrednio w tle wchodzi w ten stan zamiast nieaktywnego. Aby uzyskać informacje o sposobie wykonywania kodu w tle, zobacz Wykonywanie w tle.

+0

Link referencyjny nie działa teraz. –

+0

Po prostu edytowane - poprawiono link. –

+0

Mam problem z tym, że moja aplikacja traci token logowania, gdy aplikacja pozostaje w tle, i próbuję ją otworzyć po dłuższej chwili. Token jest zapisywany poprawnie tylko wtedy, gdy użytkownik zabije aplikację, więc wywnioskuję, że przy aplikacji Tillate pojawiła się sztuczka, ponieważ istnieje różnica w zależności od tego, kto zabił aplikację. Czytam dokumentację, ale nadal nie mam jej jasno. Jakieś pomysły? Jaką polecasz metodę delegowania? Dzięki. – Josh

Powiązane problemy