Jeśli masz dobrze zaprojektowany widok, który reaguje na gesty i przechodzi między stanami, zadbaj o to, aby działał szybko. Aby uniknąć powolnego działania interfejsu lub zacinania się podczas odtwarzania, upewnij się, że animacje działają stale z częstotliwością 60 klatek na sekundę.
Przyspieszanie widoku
Aby przyspieszyć wyświetlanie, usuń niepotrzebny kod z procedur, które są często wywoływane. Zacznij od onDraw(), która daje największy zwrot. W szczególności wyeliminuj alokacje w onDraw(), ponieważ mogą one prowadzić do czyszczenia pamięci, które powoduje zacinanie się. przydzielać obiekty
podczas inicjowania lub między animacjami; Nigdy nie przydzielaj pamięci, gdy trwa animacja.
Oprócz tego, że onDraw() jest bardziej wydajny, zadbaj o to, aby wywoływać go jak najrzadziej. Większość połączeń pod numer onDraw() to wynik połączenia pod numer invalidate(), więc wyeliminuj niepotrzebne połączenia pod numer invalidate().
Inną bardzo kosztowną operacją jest przechodzenie przez układy. Gdy widok wywołuje requestLayout(), system interfejsu Androida przechodzi przez całą hierarchię widoków, aby określić, jak duży powinien być każdy widok. Jeśli znajdzie sprzeczne pomiary, może wielokrotnie przechodzić przez hierarchię. Projektanci interfejsu użytkownika czasami tworzą głębokie hierarchie zagnieżdżonych obiektówViewGroup. Te głębokie hierarchie widoków powodują problemy z wydajnością, dlatego staraj się, aby hierarchie widoków były jak najpłytsze.
Jeśli masz złożony interfejs, rozważ napisanie niestandardowego elementu ViewGroup, który będzie odpowiadać za jego układ.
W przeciwieństwie do wbudowanych widoków widok niestandardowy może przyjmować założenia dotyczące rozmiaru i kształtu elementów podrzędnych, a tym samym unikać przechodzenia przez nie w celu obliczenia wymiarów.
Jeśli np. masz niestandardowy widok ViewGroup, który nie dostosowuje swojego rozmiaru do wszystkich widoków podrzędnych, unikasz kosztów związanych z pomiarem wszystkich widoków podrzędnych. Ta optymalizacja nie jest możliwa, jeśli używasz wbudowanych układów, które są dostosowane do szerokiego zakresu przypadków użycia.