2016-02-25 42 views
5

Istnieją dwie podklasy WKInterfaceController w mojej aplikacji Apple Watch. Pierwszy to wejście innego, ich relacje to nextPage z Konstruktorem interfejsu. Dla metody i i didDeactivate w każdym kontrolerze interfejsu, wydrukowałem je wszystkie podczas uruchamiania aplikacji zegarka.Jaki jest cykl życia aplikacji Watch?

I mam to wyjście:

awakeWithcontext -> First 
awakeWithContext -> Second 
willActivate -> First 
willActivate -> Second 
didDeactivate -> Second 

i przesuń do następnego InterfaceController:

willActivate -> Second 
didDeactivate -> First 

Więc teraz pytanie brzmi:

będą wszystkie metody wszystkich InterfaceControllers awakeWithContext w aplikacji Watch być zwolniony tak długo, jak uruchomiony?

Co z metodą willActivate?

Odpowiedz

0

awakeWithContext jest wywoływana podczas inicjowania. Ta metoda zostanie wywołana na wszystkich Twoich stronach w aplikacji do zegarka po uruchomieniu.

willActivate jest wywoływane, gdy kontroler interfejsu ma zostać wyświetlony. Powodem, dla którego wywoływany jest drugi kontroler interfejsu willActivate, a następnie didDeactivate, jest to, że jest to następna strona, która może być wyświetlana na ekranie. Dzieje się tak, aby pomóc załadować kolejny kontroler interfejsu z odpowiednimi danymi, ponieważ może on wkrótce pojawić się na ekranie.

W związku z tym, gdyby użytkownik miał kontroler interfejsu trzeciej strony, jego numer willActivate, a następnie didDeactivate, byłby wywoływany, gdy drugi kontroler interfejsu znajduje się na ekranie.

Apple Doc na willActivate. Page-based navigation na zegarku nie może tego wyraźnie powiedzieć, ale zawsze pomaga czytać.

5

Cykl życia aplikacji watchOS jest taki, jak opisano poniżej.

awakeWithContext

Podczas inicjowania stronę awakeWithContext zostanie wywołana. Jest to pierwsza metoda, która ma zostać wywołana i nie jest wyświetlany żaden interfejs użytkownika.

Powinieneś zrobić coś w rodzaju aktualizowania tablic modeli dla widoków tabel, ustawiania właściwości itp. W awakeWithContext. Ta metoda ma bardzo podobne zadanie do inicjalizatorów w prostych klasach (init()), ale tym razem w WKInterfaceController s.

Odpowiedź swoim pierwszym pytaniu:

awakeWithContext zostanie wywołana na wszystkie strony, jak tylko watchOS uruchomieniu aplikacji.

willActivate

Kiedy kontroler interfejsu ma być wyświetlany, willActivate zostanie wywołana.

Powinieneś zaktualizować wartości etykiet, akcje i cokolwiek innego związanego z wyświetlaniem tam elementów.

Odpowiedź drugiego pytania:

willActivate zostanie wywołana na wszystkie strony jak najszybciej aplikacji watchOS uruchamia, ale w przeciwieństwie do awakeWithContext, ten będzie nazwany ponownie jak najszybciej zobaczyć kontroler (innymi słowy, kiedy połączysz się z żądanym interfejsem, ).

Po pierwszym uruchomieniu aplikacji, idąc do drugiego, jego willActivate zostanie wywołana przed wszystkie kontrolery didDeactivate zostanie wywołana, z wyjątkiem prądu i do didDeactivate miano na pierwszej.

więc cykl życia jest:

1- awakeWithContext wszystkich widokach

2- willActivate wszystkich widokach

3- didDeactivate wszystkich widokach, z wyjątkiem pierwszej (aktualna)

A kiedy przesuwając do drugiego:

1- willActivate drugiego widoku

2- didDeactivate pierwszego widoku