Запуск моего приложения вызывает использование 40% CPU на моем телефоне:
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);
...
Комментируя метод setText, использование CPU падает до ожидаемого уровня ~ 4%. Метод вызывается каждую секунду и обновляет ImageViews, CustomViews... без возникновения одного и того же избытка нагрузки. Помимо использования ЦП dalvik постоянно сообщает сборку мусора около 10-1000 объектов, просто вызвав setText().
Создание такого трассировочного файла:
Debug.startMethodTracing("setText");
c.mTxtPosition.setText(position);
Debug.stopMethodTracing();
traceview перечисляет следующие методы как Top 5 своим соответствующим эксклюзивным CPU%:
- ViewParent.invalidateChildInParent(16%)
- View.requestLayout(11%)
- ViewGroup.invalidateChild(9%)
- TextView.setText(7%)
- верхнего уровня (6%)
Кто-нибудь объясняет это?