Przejścia w muszli

Wprowadzenie przejść powłoki ujednoliciło i skodyfikowało metodę uruchamiania animacji w systemie, umożliwiając pobieranie scentralizowanych informacji o animacjach przeznaczonych do wykonania.

Ślad przejścia zawiera dane o każdym przejściu w powłoce WindowManager (WM), zarówno z serwera systemowego, jak i z powłoki. Droidfood trwale włącza ten ślad i automatycznie umieszcza go w raportach o błędach.

Więcej informacji o zbieraniu śladów znajdziesz w artykule Przejścia powłoki.

Przeglądarka przejść Winscope wyświetla te informacje w przypadku śladów przejść, które zawierają informacje po stronie serwera i po stronie klienta. Przeglądarka zawiera widok dziennika tabeli po lewej stronie, który wyświetla ogólne informacje o przejściach, oraz widok szczegółowy po prawej stronie dla każdego przejścia:

Analiza śladu przejścia powłoki

Rysunek 1. Analiza śladu przejścia powłoki.

Widok tabeli

Widok tabeli zawiera:

  • Id: identyfikator przejścia generowany tylko na potrzeby debugowania.
  • Type: typ przejścia zdefiniowany w  Transitions.java.
  • Czas wysłania: sygnatura czasowa wysłania przejścia z serwera do powłoki w celu obsługi.
  • Czas wysłania: sygnatura czasowa wysłania przejścia do modułu obsługi w celu rozpoczęcia odtwarzania.
  • Czas trwania: czas, jaki upłynął od rozpoczęcia do zakończenia przejścia.
  • Stan: jeśli przejście było:
    • ZAGRANO:: zagrano.
    • ABORTED: przerwano przed odtworzeniem. Przejście można przerwać po stronie powłoki lub menedżera okien.
    • MERGED: scalone przez moduł obsługi przejścia z innym odtwarzanym już przejściem (moduł obsługi decyduje, jak to zrobić).

Widok szczegółowy

Oprócz szczegółów w widoku tabeli szczegółowy widok przejścia w sekcji WYBRANE PRZEJŚCIE zawiera:

  • handler: moduł obsługi przejść, który obsłużył tę animację.
  • createTimeNs: sygnatura czasowa utworzenia przejścia po stronie serwera WM.
  • finishTimeNs: sygnatura czasowa powiadomienia serwera WM o zakończeniu przejścia po stronie powłoki.
  • endTransactionId: ostateczna transakcja SurfaceFlinger uwzględniona w tej zmianie.
  • startTransactionId: początkowa transakcja SurfaceFlinger uwzględniona w tej zmianie.
  • targets: Lista uczestników przejścia.
  • type: typ przejścia zdefiniowany w Transitions.java.

Cele

Cele to elementy związane z przejściem, zwykle działania lub zadania. W przypadku każdego miejsca docelowego rejestrowane są te informacje:

  • layerId: warstwa, która jest animowana (z hierarchii SurfaceFlingera).
  • mode: typ animacji wykonanej na tej warstwie.
  • windowId: okno, które jest animowane (z hierarchii WindowManager).
  • flags: do warstwy zastosowano nowy zestaw flag.