Java 类型化数组应在与#recycle()一起使用后回收

Java 类型化数组应在与#recycle()一起使用后回收,java,android,class,recycle,Java,Android,Class,Recycle,我的代码显示此警告消息: 类型化数组应在与#recycle()一起使用后循环使用,以获得类型化数组 代码: 您应该保留从obtainTypedArray()返回的TypedArray,并在使用后调用recycle() 此外,硬编码十六进制值(如0x7f050000不太可能是正确答案。使用循环()在obtainTypedArray()语句的末尾。 不要使用hex值,这可能会导致将来的代码复杂化。因此,我认为您最好创建一个类型化数组,用obtainTypedArray设置它,然后用ta.recyle

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

类型化数组应在与#recycle()一起使用后循环使用,以获得类型化数组

代码:


您应该保留从
obtainTypedArray()
返回的
TypedArray
,并在使用后调用
recycle()

此外,硬编码十六进制值(如
0x7f050000
不太可能是正确答案。

使用
循环()
obtainTypedArray()语句的末尾。

不要使用
hex
值,这可能会导致将来的代码复杂化。

因此,我认为您最好创建一个类型化数组,用obtainTypedArray设置它,然后用ta.recyle()正确地消除它;只要您不再需要它(即,在返回语句之前)。它显示一个错误
MainActivity类型的方法recyle()是未定义的
Yes。事实上,您应该回收类型化数组,而不是活动。我在评论中说ta.recycle();,不是这个。recycle();。这不是打字错误。“ta”代表“typed array”,你应该在使用imageview.setImageResource之前创建它……所以你告诉我把
imageview.recycle()否,否,否。ta.recycle();假设您设置了Darray ta=。。。然后你使用它,然后你回收它。@mojojo你不(不应该)硬编码它。改用名称,例如
R.id.foo
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;
}