Simple TextView.setText verursacht 40% CPU-Auslastung

Das Ausführen meiner Anwendung verursacht ~ 40% CPU-Auslastung auf meinem Telefon:

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);
         ...

Durch Auskommentieren derText setzen Bei dieser Methode sinkt die CPU-Auslastung auf den erwarteten Wert von ~ 4%. Die Methode wird jede Sekunde aufgerufen und aktualisiert ImageViews, CustomViews ..., ohne den gleichen Lastüberschuss zu verursachen. Neben der CPU-Auslastung meldet Dalvik ständig die Müllabfuhr von ca. 10-1000 Objekten, indem er nur aufruftText setzen().

Erstellen Sie eine Trace-Datei wie folgt:

Debug.startMethodTracing("setText");
c.mTxtPosition.setText(position);
Debug.stopMethodTracing();

traceview listet die folgenden Methoden als Top 5 nach ihrer jeweiligen exklusiven CPU% auf:

ViewParent.invalidateChildInParent (16%)View.requestLayout (11%)ViewGroup.invalidateChild (9%)TextView.setText (7%)oberste Ebene (6%)

Hat jemand eine Erklärung dafür?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage