2015-02-11 20 views
8

Na Androidzie, kiedy piszę aplikację, muszę zaimplementować onResume/onPause, aby moja aktywność mogła przejść do tła i powrócić z pierwszego planu. Mam googleed, jeśli potrzebuję, jak zrobić to samo dla iOS. Ale nie mogę znaleźć niczego przydatnego. Czy możesz mi powiedzieć, co muszę zrobić, aby obsłużyć moją aplikację na iOS w tle i wracać na pierwszy plan?onResume/onPauza na iOS aplikacji

Dziękuję.

+0

Mam nadzieję, że to rozwiązałem, zobacz moją odpowiedź na właściwą rzecz. –

Odpowiedz

9

Istnieje dedykowana klasa, która odbiera delegacje odbierające (z samej instancji aplikacji) dla tych zdarzeń, zwykle zwanych XXXApplicationDelegate.

Tam należy wprowadzić metody delegatów dla cyklu życia aplikacji.

- (void)applicationWillResignActive:(UIApplication *)application { 
} 

- (void)applicationDidEnterBackground:(UIApplication *)application { 
} 

- (void)applicationWillEnterForeground:(UIApplication *)application { 
} 

- (void)applicationDidBecomeActive:(UIApplication *)application { 
} 

- (void)applicationWillTerminate:(UIApplication *)application { 
} 
+0

Pytanie dotyczy cyklu życia kontrolera w przeciwieństwie do cyklu życia aplikacji. –

+0

Domyślam się, że najbliżej 'onPause' /' onResume' jest na przykład, aby opublikować [powiadomienia] (https://developer.apple.com/documentation/foundation/nsnotificationcenter) z 'applicationDidEnterBackground' /' applicationWillEnterForeground' i odbierać ich od kontrolera. –

2

Chcesz spojrzeć na Apple documentation na cykl życia aplikacji. W szczególności interesują Cię: application:didFinishLaunchingWithOptions:, applicationDidBecomeActive: i applicationDidEnterBackground.

+0

Pytanie dotyczy cyklu życia kontrolera w przeciwieństwie do cyklu życia aplikacji. –

+0

Umieszczanie tego samego komentarza więcej niż raz nie czyni go bardziej poprawnym. –

+0

i masz rację! –

4

Szukasz

override func viewDidDisappear(animated: Bool) {} 

dla OnPause

i

override func viewDidAppear(animated: Bool) {} 

dla onResume

Pozostałe odpowiedzi odnoszą się do całego cyklu życia aplikacji C allbacks w przeciwieństwie do wywołań zwrotnych kontrolera (Activity in Android).

+3

To po prostu nie jest poprawne. PO wyraźnie pyta: "co muszę zrobić, aby obsłużyć moją aplikację na iOS i przejść na pierwszy plan?" Dwie podane przez ciebie metody NIE odpowiadają aplikacji przechodzącej przez BACK/FORG, ale zamiast tego cały cykl życia widoku kontrolera widoku, który jest zupełnie inną rzeczą. –

+1

Być może powinieneś spojrzeć na dokumentację Androida na temat konkretnych metod i tego, co robią. onResume i onPause są powiązane z działaniem w przeciwieństwie do cyklu życia aplikacji. W pytaniu jest też wzmianka o aktywności. A więc to 2 na 1, jeśli jest to kwestia semantyki. Dlaczego nie przejrzeć odpowiedzi? –

+0

Aby było jasne, Android 'onResume' jest wywoływany za każdym razem, gdy działanie przychodzi na pierwszy plan, nawet podczas przełączania aplikacji w tę iz powrotem lub wyłączania i włączania ekranu. Z drugiej strony "viewDidAppear" iOS jest wywoływany tylko raz, gdy widok kontrolera pojawił się na ekranie po raz pierwszy. –