所以我的ListView在我的手机上口吃,所以我使用TraceView来确定罪魁祸首。
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = inflater.inflate(R.layout.menu_row, parent, false);
ViewHolder holder = new ViewHolder();
// setting other Views.
holder.icon = (ImageView) view.findViewById(R.id.icon);
view.setTag(holder);
return view;
}
@Override
public void bindView(View v, Context context, Cursor c) {
ViewHolder holder = (ViewHolder) v.getTag();
// getting other Views
String imgUrl = c.getString(6);
int resource = getResources().getIdentifier(imgUrl, "drawable", getActivity().getPackageName());
if (resource != 0) {
holder.icon.setImageResource(resource);
return;
}
}
正如预期的那样,newView和bindView占用了我所有方法调用的大部分时间。
我深入挖掘了setImageResource,调用层次结构如下:(所有这些方法都是cpu时间的99%):
如何优化ListView? (我的所有图像的磁盘大小不超过15 KB。)
这是ImageView我正在设置xml:
<ImageView
android:id="@+id/icon"
android:layout_width="0dp"
android:layout_height="85dp"
android:layout_gravity="center_vertical"
android:layout_marginRight="10dp"
android:layout_weight="25"
android:adjustViewBounds="true"
android:contentDescription="@string/description_item"
android:minHeight="85dp"
android:minWidth="85dp"
android:scaleType="fitCenter"
/>
编辑:我已将ImageView xml更改为:
<ImageView
android:id="@+id/icon"
android:layout_width="85dp"
android:layout_height="85dp"
android:scaleType="center"
android:contentDescription="@string/description_item"
/>
未提供任何性能提升。