使用#recycle()后,应该回收Typed Array

时间:2014-01-25 18:27:29

标签: java android class recycle

我的代码显示此警告消息:

  

对于 gotTypedArray

类型数组应在使用#recycle()后回收

代码:

public View getView(int i, View view, ViewGroup viewgroup)
{
    ImageView imageview;
    if (view == null)
    {
        imageview = new ImageView(b);
        imageview.setLayoutParams(new android.widget.AbsListView.LayoutParams(110, 110));
        imageview.setPadding(1, 1, 1, 1);
        imageview.setAdjustViewBounds(false);
        imageview.setScaleType(android.widget.ImageView.ScaleType.CENTER_CROP);
    } else
    {
        imageview = (ImageView)view;
    }
    imageview.setImageResource(a.getResources().obtainTypedArray(0x7f050000).getResourceId(i, -1)); //*warning*Typed Array should be recycled after use with #recycle()
    return imageview;
}

2 个答案:

答案 0 :(得分:14)

您应该抓住TypedArray从[{1}}返回obtainTypedArray()并在使用后致电recycle()

此外,对像0x7f050000这样的十六进制值进行硬编码不太可能是正确答案。

答案 1 :(得分:10)

recycle();声明的末尾使用obtainTypedArray()。 不要使用hex值,将来可能会导致代码出现问题。