2010-07-23 20 views
5

Nie mogę znaleźć żadnej dokumentacji dotyczącej szczegółów pętli uruchamiania aktywności w systemie Android.Anatomia pętli z uruchomionym systemem Android

Apple dokumentuje "anatomy of a run loop" i jest to prawie to, czego szukam. Dokumentacja systemu Android po prostu mówi "Activity Is Running" w swoim diagramie stanu cyklu życia. Oczywiście jest to wspierane przez jakąś pętlę uruchamiania.

Ktoś ma pewien wgląd (aka Dokumentacja) do wnętrza pętli uruchamiania Aktywności?

edit - Powinienem wyjaśnić, że zakładam, że pętla uruchamiania jest rzeczywiście własnością głównego wątku UI i jest przez niego uruchamiana. Obecna funkcjonalność jest prawdopodobnie wprowadzana do tego runloopa w pewnym momencie. Interesuje mnie ogólna pętla wątków interfejsu UI, a także rola jaką zajmuje w niej Activity.

+0

I musi być brakuje czegoś. Czego więcej szczegółów jest potrzebnych niż "Aktywność jest uruchomiona"? Dlaczego ma znaczenie to, co Android robi w tej pętli, o ile "wdrażasz" lub "rozszerzasz" odpowiednie rzeczy, aby twoja aplikacja robiła to, co musi robić? – kiswa

+0

Ponieważ podczas pisania aplikacji gwintowanych, charakterystyka pętli uruchamiania może być przydatna z wielu różnych powodów. To powiedziawszy, myślę, że sama ciekawość byłaby słuszną przyczyną. – DougW

+0

Pytanie o "wgląd w wewnętrzne elementy pętli uruchamiania działania" jest zbyt szerokie. – CommonsWare

Odpowiedz

3

Krótka odpowiedź brzmi: "nie przejmuj się, to jest zrobione dla ciebie".

Czynności i inne konstrukcje znajdują się na szczycie android.os.Looper, komunikując się z nimi za pośrednictwem instancji android.os.Handler. A Looper zarządza twoją "pętlą uruchamiania", wysyłając wiadomości z kolejki i blokując wątek, gdy jest pusty. Handler s komunikują się z wątkiem Looper i zapewniają mechanizm pracy z kolejką komunikatów.

W większości przypadków nie trzeba pracować z jednym z nich bezpośrednio. Wydarzenia związane z cyklem życia dla głównych komponentów aplikacji, takich jak Działania i Usługi, będą wysyłane do Twojego kodu. Jeśli jesteś ciekaw, co znajduje się pod maską, oba źródła są dostępne:

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/Looper.java

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/Handler.java

+0

Miałem nadzieję, że istnieje bardziej strawiona wersja tych informacji, ale jeśli nie ma, nie ma i to jest odpowiedź. Dzięki Adamp. – DougW

0

Aktualizacja:

Naprawdę nie ma nic specyficznego czym mowa o „aktywny jest uruchomiony.” Aktywność polega po prostu na wyświetlaniu interfejsu użytkownika, obsłudze danych wejściowych, wykonywaniu wszelkich niezbędnych funkcji i rozpoczęciu kolejnego działania.

Jeśli interesuje Cię, jakie konsekwencje może mieć wielowątkowość w pętli uruchamiania, nie ma naprawdę konkretnej relacji. Twoje wątki mogą po prostu wykonywać swoją pracę, a stan działania będzie działać niezależnie i automatycznie aktualizować jego interfejs użytkownika (pod warunkiem, że poprawnie zadzwonisz pod numer postInvalidate()).


oryginalny:

Spójrz na pierwszym wykresie na tej stronie: http://developer.android.com/reference/android/app/Activity.html

Określa ona „życia” każdego działania, co mówi, może to być, jeśli o to ci szukam.

+0

I to jest to, co łączyłem z ... Chcę wiedzieć, co się dzieje w części "Działanie to działa". – DougW

+0

Woops, mój błąd. Za chwilę edytuję odpowiedź. –

+0

Bez problemu Andy. Zdecydowanie istnieje pętla, ale jestem pewien, że wygląda podobnie do tego, który podłączyłem do iPhone'a. Działania "działające" zostają prawdopodobnie wprowadzone do globalnego wątku UI wątku, ale z pewnością ma on własny zestaw kroków w każdej pętli, aby sprawdzić oddzwanianie, stan itp. Ciekawi mnie, jak wygląda ten cały shebang. – DougW

Powiązane problemy