2013-07-03 10 views
10

Podczas debugowania aplikacji na Androida w pewnym momencie widzę ogromną ilość wpisów w LogCat zTag: TextLayoutCache Tekst: Wartość Cache usunięte

Tag: TextLayoutCache Text: Cache Value 0x51b9f578 deleted, size=168 (the hexa value changes from entry to entry) 

Czy ktoś wie co to chodzi? Wyciek pamięci? Wszelkie pomysły na rozwiązanie tego problemu, jeśli jest to problem? Dzięki!

Odpowiedz

5

Nie robi wydaje się być ostateczną odpowiedzią w sieci, więc rzuciłem okiem na kod dla TextLayoutCache.cpp. Wygląda dobrze dla mnie. To buforowanie danych układu tekstu w celu zwiększenia wydajności, a obecnie ustalony domyślny rozmiar pamięci podręcznej wynosi 0,5 MB zdefiniowany w TextLayoutCache.h.

Jeśli zmienisz tekst układu na stały zestaw wartości (< 0,5MB), komunikat dziennika nie zostanie wyświetlony.

Jeśli zmienisz tekst na wartości dynamiczne, to ostatecznie pamięć podręczna zostanie wypełniona, a wpis pamięci podręcznej LRU (ostatnio używany) zostanie usunięty, a zobaczysz komunikat dziennika. To tylko komunikat debugowania, a nie błąd, a nie wyciek. Jest to przydatny wskaźnik wydajności dotyczący sposobu obsługi naszych aplikacji przez urządzenia wewnętrzne Android.

Zauważ, że TextLayoutCache nie jest używany w wersji Android> = 5.

0

natknąłem samej kwestii, kiedy aktualizowania moje wartości TextView z obsługi za pomocą runnable &

Zebrałem wystąpienie TextView przez findViewById() do zmiennych, a następnie aktualizację wartości TextView odnosząc te zebrane instancji.

Tak więc, jak zauważyłem, nie potrzebuję instancji tego tekstu poza moim handerem, więc używam findViewById() wewnątrz handler'a i zaktualizowałem moje textviews.

napisać findviewById() w kontekście trzeba id. (Mówimy o nawiasach swojego funkcji używając go .. w moim przypadku).

Hope this helps ...

+0

Dzięki, będę go spróbować, ale tak czy inaczej pomimo, czy to działa, nie rozumiejąc wciąż błąd, Jak/Kiedy/Co to jest być w pamięci podręcznej. BTW, sprawdziłem i używam odniesienia w wielu miejscach, więc nie chcę wywoływać findbyid za każdym razem, gdy używam metody w klasie, zamiast mieć tylko jedno odwołanie i używać go. – polonskyg

+0

Jak już wspomniałem natknąłem się na to podczas aktualizacji textView z wątku działającego w sposób ciągły. Jeśli nie wywołasz findViewById, doda te linie do twojego logcat. Nie ma związku z wyciekiem pamięci, odpowiedziałem na pytanie z uzasadnieniem, dlaczego tak się dzieje (w moim przypadku). – MobileEvangelist

+0

Ok, próbowałem go znać, ale wciąż powtarza, może być inny problem. W każdym razie dzięki! – polonskyg

Powiązane problemy