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?

questionAnswers(4)

yourAnswerToTheQuestion