Я создал пользовательскую настройку, которая имеет следующий конструктор
public CoordinatesPreference(Context context, AttributeSet attrs)
{
super(context, attrs);
setLayoutResource(R.layout.coordinates_preference);
}
И у меня есть Overriden onCreateView()
, поэтому он записывает в журнал следующим образом:
@Override
protected View onCreateView(ViewGroup parent)
{
Log.d("test", "Creating Preference view");
return super.onCreateView(parent);
}
а мой журнал заполнен сообщениями "Creating Preference view"
, это создает ощущение ленивости для прокрутки, и я считаю, что преобразование в представлении должно решить это, я посмотрел исходный код предпочтения, и если преобразование имеет значение null, то onCreateView()
.
для тестирования я добавил этот метод:
@Override
public View getView(View convertView, ViewGroup parent)
{
if (convertView == null)
{
return super.getView(convertView, parent);
}
return super.getView(convertView, parent);
}
и установите точку останова. Я обнаружил, что почти всегда мой конвертированный вид имеет значение null. и поэтому он должен создать новое представление, почему это? и как я могу улучшить это, чтобы избежать экрана с задержкой?
EDIT: изменил способ вызова onCreate, теперь его все андроид я просто использую setLayoutResource
. но это не решает проблему...
EDIT2: Я использовал Debug.StartMethodTracing()
и нашел, поскольку я подозревал, что 55% времени (когда я просто прокручиваю вверх и вниз) тратится на инфляцию предпочтения от метода onCreateView()
, который вызывается из getView()
, когда convertView
имеет значение null.
Спасибо, Джейсон