долгое время читатель, впервые спрашивающий, поэтому, пожалуйста, будьте осторожны;)
У меня есть код Android, который отображает около 10 изображений в секунду в ImageView.
(вызывая setImageBitmap в ImageView для установки нового растрового изображения)
Это приводит к задержкам отображения, поэтому я стараюсь максимально ускорить его.
Я обнаружил, что (с помощью traceview) это приложение тратит много времени на методы:
ViewRoot.performTraversals
View.measure
FrameLayout.onmeasure
ViewGrou.measureChildWithMargins
Я подозреваю, что при измерении ImageView у меня есть создание CustomImageView и overide onMeasure, просто чтобы вызвать метод super и написать sysout.
Кажется, что после каждого setImageBitmap onmeasure вызывается 3 раза.
Растровые изображения всегда одинакового размера, поэтому изменений нет. На самом деле это может изменяться время от времени, когда источник изображения изменяется, но это должно быть измерено только тогда.
Что я могу изменить, переопределить, сделать, чтобы исключить влияние этого измерения на скорость приложения?
Если вам нужна дополнительная информация, сообщите мне, и я предоставлю ее.
Пример кода
final Bitmap bitmapScaled = Bitmap.createScaledBitmap(bitmap2, width, height, false);
imageView2.setScaleType(ScaleType.CENTER_INSIDE);
if (setSize) {
setSize(imageView2, width, height);
}
imageView2.setImageBitmap(bitmapScaled);
Метод, который я изменяю, чтобы заставить его работать быстрее (возможно, небезопасно?!)
boolean layout=true;
int noL=1;
@Override
public void requestLayout() {
if (layout){
super.requestLayout();
if (noL>10){
layout=false;
}else{
noL++;
}
}
}