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?