Ho un'app di riconoscimento della grafia: l'utente disegna con il dito, l'app riconosce i caratteri. Il motore di riconoscimento viene eseguito in un thread di lavoro con la minima priorità possibile: Thread.MIN_PRIORITY
. È un algoritmo puramente CPU/memoria, nessun I/O qualunque. Tuttavia, quando il thread sta funzionando attivamente, l'interfaccia utente diventa piuttosto instabile. I tratti delle dita subiscono un ritardo notevole da visualizzare. Inoltre noto che gli eventi tattili si perdono.Quando il thread di lavoro funziona, l'interfaccia utente diventa instabile
Non è esattamente quello che avrebbe dovuto evitare il threading? Perché il thread dell'interfaccia utente è affamato di CPU? Come convincere il sistema a trattare il thread di lavoro come, beh, un thread in background con priorità bassa?
Sembra che il sistema introduca (volontariamente o a causa della mancanza di CPU) un ritardo tra invalidate()
e onDraw()
. Posso in qualche modo abbassare quel ritardo?
Test su hardware relativamente vecchio - HTC Magic con Android 2.1.
La resa periodica ha avuto l'effetto migliore. –
Ciao D., potresti correggere il rientro in questo blocco di codice? Inoltre, potresti provare ad aggiungere un [tag lingua] (http://meta.stackexchange.com/a/75019/321006) per cercare di impedire all'evidenziatore della sintassi di pensare che yield sia una parola chiave? Penso che l'evidenziatore automatico presupponesse che si trattasse di codice C#. – jrh