Использование (StateListDrawable) против StateListDrawable

Мне нужно задать цвет фона и динамически нажимать цвет в каждой строке. Какой из двух подходов лучше? И у какого из двух лучше производительность?

public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position)
{
    var holder = viewHolder as adpCategoryPreviewViewHolder;

    using (StateListDrawable states = new StateListDrawable())
    {
    
        if (position % 2 == 0)
        {
            states.AddState(new int[] { Android.Resource.Attribute.StatePressed }, new ColorDrawable(Color.ParseColor("#ffc27c")));
            states.AddState(new int[] { }, new ColorDrawable(Color.ParseColor("#FFFFFF")));
        }
        else
        {
            states.AddState(new int[] { Android.Resource.Attribute.StatePressed }, new ColorDrawable(Color.ParseColor("#ffc27c")));
            states.AddState(new int[] { }, new ColorDrawable(Color.ParseColor("#bfddff")));
        }
        holder.layout.Background = (states);
    }
}

##ПРОТИВ

StateListDrawable states = new StateListDrawable();
if (position % 2 == 0)
{
    states.AddState(new int[] { Android.Resource.Attribute.StatePressed }, new ColorDrawable(Color.ParseColor("#ffc27c")));
    states.AddState(new int[] { }, new ColorDrawable(Color.ParseColor("#FFFFFF")));
}
else
{
    states.AddState(new int[] { Android.Resource.Attribute.StatePressed }, new ColorDrawable(Color.ParseColor("#ffc27c")));
    states.AddState(new int[] { }, new ColorDrawable(Color.ParseColor("#bfddff")));
}
holder.layout.Background = (states);  
            
1
0
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Производительность процессора не отличается между двумя примерами. Единственное, что отличается, это то, что первый пример с использованием шаблона использует удаление управляемого экземпляра StateListDrawable, когда код выходит за рамки using.

Это позволит стороне Android избавиться от выделенной памяти, поскольку это управляемая вызываемая оболочка, когда она освобождает ресурсы.

Я бы предпочел использование шаблона, так как он более безопасен с точки зрения утечки памяти. Тем не менее, вы не увидите никакого увеличения производительности с точки зрения скорости.

Другие вопросы по теме