Wow, nie spodziewałem się takiego odzewu.
Zrywy występują w zupełnie przypadkowych sytuacjach?
Tak, zrywy są w przypadkowych momentach co pare sekund. Jak wrócę z pracy to wrzucę screena gdzie - po wyłączeniu czyszczenia tła przed rysowaniem każdej klatki - widać "smugę" pozostawianą przez poruszający się sprite i widać też zrywy na tej "smudze".
Swoją drogą aplikacja nic nie robi tylko odswieża pozycję kilku obiektów na ekranie i je rysuje w pętli - nic skomplikowanego.
GC to główny podejrzany, ale jeśli go wykluczyłeś, to właściwie ciężko coś będzie namierzyć. Równie dobrze może to być jakiś serwis chodzący w tle, a nie powiązany kompletnie z twoją aplikacją.
Telefon ma czysty system, w tle na 99% nic nie chodzi (swoją drogą jak to sprawdzić ? - telefon mam od 3 dni)
Myślę, że serwis chodzący w tle można szybko wyeliminować. Wyłączyć zbędne serwisy i/lub przetestować na innej aplikacji, czy freezy się pojawiają.
Sprawdzenie telefonu na innej grze to jest jakaś myśl. Niech ktoś rzuci nazwę jakiejś aplikacji do ściągnięcia która nie korzysta z openGLa.
no tak zbadałeś wszystko co dotyczy Javy usługi, GC itd.. ale nie wziąłeś pod uwagę serwera usług innych ważnych procesów Java oraz samego systemu i procesów systemowych które w tle coś na bieżąco robią, uruchom program na emulatorze tam będzie lepiej widać i włącz podgląd czasu procesora sprawdź pod kontem anomalii w proporcjach zielonego do czerwonego
Emulator nawet na szybkim pececie jest zbyt wolny żeby było cokolwiek widać, jak mówiłem zrywy są lekkie i ogólnie bardzo ich nie widać, ale jak ktoś się wpatruje to robią się denerwujące.
Cwany <- prawdopodobnie nie tu leży problem, ale obsługa zdarzeń wejścia potrafi poważnie zmulić aplikację. Dodanie spania w obsłudze zdarzeń wątku UI rozwiązuje problem....
Tak, czytałem że zdarzenia wejścia potrafią nieźle namieszać i że trzeba usypiać ich wątek, ale to nie to bo zrywy są nawet gdy nie dotyka się ekranu i klawiszy. A gdy dotknę ekranu i pojawi się tam lecący obiekt to nie widać w momencie dotknięcią jakiegoś wyraźnego spadku wydajności.
Canvas raczej nic nie alokuje, z tego co wyczytałem Allocation Tracker podpina się bezpośrednio do Dalvika i pokazuje wszystko. Można też tam odpalić ręcznie GC i zobaczyć ilość zaalokowanych obiektów - w moim przypadku po przeróbkach programu na nic nie alokujący wartość ta pozostaje stała.
---------- Post dołączono o 23:35 ---------- Poprzedni post napisano o 15:56 ----------
Ciężko to pokazać, ale nie odświeżając tła widać smugi po 3-ech poruszających się obiektach i te smugi w momentach "zrywu" zostawiają małe przerwy.
Patrząc na gry z marketu ciężko stwierdzić jak one są rysowane, przykładowo Jewels działa płynnie (lub tego poprostu nie widać bo gra jest w większości statyczna). Abduction niby działa płynnie ale jak zatrzymamy się w miejscu i patrzymy na poruszającą się chmurkę to widać właśnie ten efekt przycinania raz na pare sekund.
Teraz pytanie czy to tylko kwestia Spicy czy rysowania po canvasie ?