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