2013-07-03 40 views
10

在調試我的Android應用在某一點上我看到一個巨大的項目的數量在logcat中與標籤:TextLayoutCache文字:緩存值刪除

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

有誰知道這是什麼呢?內存泄漏?任何想法如何解決它,如果它是一個問題? 謝謝!

回答

5

有不似乎是網上的明確答案,所以我看了一下TextLayoutCache.cpp的代碼。對我來說看起來很好。它緩存文本佈局數據以提高性能,目前在TextLayoutCache.h中定義的默認緩存大小爲0.5MB。

因此,如果您要將佈局文本更改爲固定的一組值(< 0.5MB),您將看不到日誌消息。

如果將文本更改爲動態值,則最終緩存將被填充,並且LRU(最近最少使用的)緩存條目將被刪除,您將看到日誌消息。這只是一個調試消息,不是錯誤,不是泄漏。這是關於Android內部機構如何處理我們的應用程序的有用性能指標。

注意TextLayoutCache沒有在Android的版本中使用> = 5

0

我遇到同樣的問題來了,當我從處理器使用可運行&

我收集findViewById()textViews的實例到變量更新我的TextView的值,然後通過參考這些收集的情況下更新的TextView的值。

因此,正如我所觀察到的,我不需要在我的手柄之外使用該textview的實例,所以我只是使用findViewById()內部處理程序並更新了我的文字瀏覽。

寫你findviewById()的情況下,你需要標識。(用它談論你的函數的括號內。在我的情況。)

希望這有助於...

+0

謝謝,我會嘗試,但不管怎麼說,儘管它是否正常工作,我一直不理解的錯誤,如何/時/那是什麼被緩存。 順便說一句,我檢查了我在多個地方使用引用,所以我不希望每次在類中使用方法時都調用findbyid,而不是隻有一個引用並使用它。 – polonskyg

+0

正如我提到的,我從連續運行的線程更新textView時遇到了這個問題。如果您不調用findViewById,它會將這些行添加到您的logcat中。這與內存泄漏無關,我已經回答了這個問題以及它發生的原因(在我的情況中)。 – MobileEvangelist

+0

好吧,我已經嘗試瞭解,但一直這樣說,可能會是一個不同的問題。不管怎麼說,多謝拉! – polonskyg