TextView.setText simples causa 40% de uso da CPU
Executar meu aplicativo causa ~ 40% de uso da CPU no meu telefone:
final String position = String.format("%02d:%02d:%02d", time.getHours(), time.getMinutes(),
time.getSeconds());
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
c.mTxtPosition.setText(position);
...
Comentando osetText método o uso da CPU cai para o nível esperado de ~ 4%. O método é invocado a cada segundo e atualiza ImageViews, CustomViews ... sem causar o mesmo excesso de carga. Além do uso da CPU, a dalvik constantemente relata a coleta de lixo de cerca de 10-1000 objetos apenas chamandosetText ().
Criando um tracefile como este:
Debug.startMethodTracing("setText");
c.mTxtPosition.setText(position);
Debug.stopMethodTracing();
traceview lista os seguintes métodos como Top 5 por seus respectivos% de CPU exclusivos:
ViewParent.invalidateChildInParent (16%)View.requestLayout (11%)ViewGroup.invalidateChild (9%)TextView.setText (7%)nível superior (6%)Alguém tem uma explicação para isso?