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