Tło
Cat Daddy Games to w 100% należące do 2K studio z Kirkland w stanie Waszyngton, które jest twórcą gry NBA 2K Mobile. Zespół chciał poprawić ogólną jakość i stabilność gier, w szczególności poprzez zmniejszenie liczby błędów typu „Aplikacja nie odpowiada”. Błędy ANR występują, gdy wątek interfejsu aplikacji na Androida jest zablokowany przez zbyt długi czas. W takim przypadku wątek główny aplikacji, który odpowiada za aktualizowanie interfejsu użytkownika, nie może rysować ani przetwarzać zdarzeń danych wejściowych użytkownika, co może powodować frustrację użytkownika. Jeśli aplikacja działa na pierwszym planie, system wyświetla okno, które umożliwia użytkownikowi przymusowe zamknięcie aplikacji.
Rozwiązanie
Zmniejszenie liczby błędów ANR było dla Cat Daddy priorytetem. Zespół kontroli jakości pracował niestrudzenie i zdobył się na wspólny wzorzec błędów ANR: okazało się, że gdy aplikacja została wstrzymana, a następnie szybko wznowiono jej działanie, duża liczba dotknięć mogła spowodować błąd ANR. Dalsze analizowanie za pomocą Firebase Crashlytics wykazało, że ten błąd ANR był typu android.os.MessageQueue.nativePollOnce, czyli najczęstszego typu błędu ANR w przypadku NBA 2K Mobile.
Twórca aplikacji Cat Daddy zauważył też, że ulepszone przetwarzanie danych wejściowych w klasie GameActivity może zapobiegać występowaniu tego typu błędów ANR, więc zdecydował się na jej użycie.
GameActivity to komponent Android Game Development Kit, który pomaga w przetwarzaniu poleceń cyklu aplikacji, zdarzeń wprowadzania danych i danych tekstowych w kodzie aplikacji C/C++. W porównaniu z NativeActivity
komponent GameActivity oferuje szereg ulepszeń dotyczących gier, takich jak Fragment
, renderowanie do SurfaceView
i inne funkcje obsługi popularnych bibliotek związanych z tworzeniem gier.
GameActivity używa też podwójnego buforowania w buforze danych wejściowych, co pozwala grze lepiej radzić sobie z dużą liczbą danych wejściowych.
Wyniki
Dzięki zastosowaniu klasy GameActivity firma Cat Daddy mogła znacznie poprawić obsługę danych wejściowych w grze, co doprowadziło do zmniejszenia liczby błędów ANR o 35%. Dzięki temu użytkownicy mogą korzystać z gry wygodniej i mieć większą satysfakcję z rozgrywki.
Dodatkowo, ponieważ klasa GameActivity dziedziczy po klasie FragmentActivity
,
CatDaddy mogła też zintegrować EmbeddedWebView i EmbeddedVideoView, które były wymagane w przypadku niektórych najpopularniejszych integracji gier społecznościowych.
Rozpocznij
Ulepsz rozgrywkę dzięki klasie GameActivity i reszcie Android Game Development Kit.