2015-09-30 10 views
10

Pracuję z biblioteką Leanback firmy Google na urządzenia z Androidem TV i staram się dowiedzieć, jak najlepiej odsłuchiwać przyciski na pilocie (szczególnie te, które nie są przechwytywane przez MediaSession).Android Studio: "Frame is not available"?

Z tego powodu mam punkt przerwania w BaseGridView.dispatchTouchEvent() i kiedy naciskam jeden z przycisków zdalnych, debugger rzeczywiście przeskakuje do tego punktu i pokazuje mi zwykłe informacje debugowania.

Jednak po kilku (2-5) sekundach informacja o debugowaniu zniknie i zostanie zastąpiona komunikatem "Ramka nie jest dostępna".

W innych miejscach debugger działa poprawnie, więc zastanawiałem się, czy opóźnienie spowodowane przez debuggera jest liczone jako ANR i aplikacja jest zatem zamknięta?

W każdym razie czy jest jakiś sposób obejścia tego?

+0

znalazłeś jakieś rozwiązanie dla tego. Mam do czynienia z tym samym na moim komputerze, podczas gdy ten sam kod działa na innym komputerze (ramki nie znikają). – CodingRat

+0

Nie, obawiam się, że nie ...Ale nie wiedziałem, że błąd był zależny od maszyny - myślałem, że to tylko związane z niektórymi aspektami kodu ... –

Odpowiedz

2

komunikat "frame not available" oznacza, że ​​nie ma więcej ramek do debugowania. Android Zjednoczone Studio pomocy wyraźnie Celem okiennej i ramy w:

Okienko Frames pozwala na uzyskanie dostępu do listy wątków aplikacji, eksport do pliku tekstowego i dostosować prezentację wątek . Dla każdego wątku można wyświetlić ramkę stosu, zbadać klatki, nawigować między klatkami i automatycznie przejść do kodu źródłowego ramki w edytorze. Możesz wybrać wątek za pomocą rozwijanej listy wyboru gwintów na górze panelu. Status i typ wątku jest oznaczony specjalną ikoną i notatką tekstową obok nazwy wątku.

Teraz, gdy nie masz dostępnych ramek oznacza, że ​​wszystkie ramki są zamknięte do debugowania. Może to wynikać z tego, że aplikacja jest w jakikolwiek sposób przymusowo zamknięta lub źle zachowuje się na tej linii. Spróbuj debugowania oświadczenia, po którym to zdarza się pozbyć tego zachowania. Nadzieja pomaga

3

Ten komunikat pojawia się, ponieważ u zbyt wielu punktów przerwań, a wątki czekają dane z innych wątków, aby osiedlić się w tym, można anulować niektóre punkty przerwania i czeka na dane, które mają być gotowe ...

+0

Ustawiałem punkty przerwania w różnych wątkach, czekając na odpowiedź, Twoja porada naprawiła mój problem – abdimuna

1

Mając ten sam problem, ponowne uruchomienie AS działa dla mnie.

0

Gdy pojawi się komunikat "frame not available", oznacza to, że nie ma więcej ramek do debugowania. Ramki są częścią debugowania Android Studio, które daje ci dostęp do listy wątków uruchomionych w Twojej aplikacji. Jest to długa lista procesów widocznych w oknie debugowania. Więc to, co się dzieje, to to, że Android Studio traci wiedzę na temat wątków, które miał przed ustawieniem punktu przerwania, gdy wychodzisz. Może się tak zdarzyć w twoim przypadku, ponieważ domyślnie po ustawieniu punktu przerwania zatrzymuje wykonywanie wszystkich wątków. Kiedy wyjdziesz, wątki, które następują, polegają na wątkach przed uruchomieniem, co zamyka aplikację. Ponieważ ustawiasz punkt przerwania na getCurrentDetails, moim najlepszym założeniem jest to, że nie otrzymał odpowiedzi od OKHttp na czas, ponieważ dzieje się to w wątku tła. Możesz wypróbować dwie rzeczy, aby to zadziałało. Najpierw spróbuj kliknąć prawym przyciskiem myszy na punkt przerwania i zmienić punkt przerwania z wstrzymywania wszystkich wątków na właśnie ten wątek. Powinno to umożliwić OKHttp uzyskanie odpowiedzi na czas przed odcięciem. Lub przesunąć punkt przerwania w dół i sprawdzić, czy działa.

Powiązane problemy