2013-07-03 5 views
10

Durante il debug mio app Android a un certo punto che sto vedendo una quantità enorme di voci nella LogCat con l'Tag: TextLayoutCache Testo: Cache Valore cancellato

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

Qualcuno sa che cosa si tratta? Perdita di memoria? Qualche idea su come risolverlo se si tratta di un problema? Grazie!

risposta

5

Non fa sembra essere una risposta definitiva in rete, quindi ho dato un'occhiata al codice per TextLayoutCache.cpp. Mi sembra a posto. Memorizza nella cache i dati del layout di testo per migliorare le prestazioni e attualmente esiste una dimensione predefinita della cache predefinita di 0,5 MB definita in TextLayoutCache.h.

Pertanto, se si modifica il testo del layout su un set fisso di valori (< 0,5 MB), non verrà visualizzato il messaggio di registro.

Se si modifica il testo in valori dinamici, alla fine la cache si riempirà e la voce della cache LRU (utilizzata meno di recente) verrà eliminata e verrà visualizzato il messaggio di registro. È solo un messaggio di debug, non un errore, non una perdita. È un utile parametro di rendimento su come gli interni di Android gestiscono la nostra app.

Nota che TextLayoutCache non viene utilizzato nelle versioni di Android> = 5.

0

mi sono imbattuto stesso problema quando stavo aggiornando i miei valori TextView dal gestore utilizzando eseguibile &

ho raccolto istanza di textViews di findViewById() in variabili, quindi l'aggiornamento dei valori di TextView facendo riferimento questi casi raccolti.

Quindi, come ho osservato, non ho bisogno di un'istanza di quella vista testuale al di fuori del mio hander, quindi uso semplicemente findViewById() all'interno del gestore e ho aggiornato le mie visualizzazioni testuali.

Scrivi la findViewById() in un contesto è necessario id. (Parlando di parentesi all'interno della vostra funzione di usarlo .. nel mio caso).

Spero che questo aiuti ...

+0

Grazie, ci proverò, ma in ogni modo, nonostante se funziona, io non continuo a capire l'errore, come/quando/Cosa è essere messo in cache BTW, ho controllato e uso il riferimento in più posti, quindi non voglio chiamare il findbyid ogni volta che uso un metodo nella classe invece di avere solo un riferimento e usarlo. – polonskyg

+0

Come ho già detto, mi sono imbattuto in questo mentre aggiornavo continuamente textView dal thread. Se non chiami findViewById, aggiunge quelle linee al tuo logcat. Non è legato alla perdita di memoria, ho risposto alla domanda con il motivo per cui sta accadendo (nel mio caso). – MobileEvangelist

+0

Ok, ho provato a saperlo, ma continua a dirlo, potrebbe essere un problema diverso. Grazie comunque! – polonskyg