简而言之,我正试图在网页浏览中显示动画GIF。此webview位于列表项中。所以,有一个不同的GIF列表视图。
我在listview上设置了这样的GIF:
View v = convertView;
if (v == null || position == 1) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.routine_exercise_item, parent, false);
}
TextView t = (TextView)v.findViewById(R.id.routine_exercise_num);
t.setText(getResources().getString(R.string.other_exercise) + " " + (position));
t = (TextView)v.findViewById(R.id.routine_exercise_description);
t.setText(mitems.get(position).description);
WebView anim = (WebView)v.findViewById(R.id.routine_exercise_gif);
anim.loadUrl("file:///android_asset/" + mitems.get(position).imagePath);
anim.setBackgroundColor(0);
我在ArrayAdapter的getView中执行此操作<>子类。
一切都加载得很好并且gif正常工作......但是,只要它显示出来,我的堆就会变得疯狂。在我的EVO 3d上,堆只需要30-45秒就能达到32MB并崩溃。
我不确定发生这样的内存泄漏我做错了什么。
任何提示?
答案 0 :(得分:3)
OOF。每个WebView
项ListView
?是的,他们很重。我不一定会看到任何会导致您看到的行为,但使用WebView
只是为了显示GIF有点矫枉过正。查看使用View
的{{1}}子类上的this tutorial来显示动画GIF。可能比WebViews轻。