[问题] GridView在上下滚动时很lag

楼主: DisdainU (茎茎濡吮汁)   2016-11-17 00:40:37
小弟是Android开发新手,最近遇到了一个问题,就是在GridView里放照片时,
上下滑动会变得很lag
这是我的ArrayAdapter的getView()
public class PhotoAdapter extends ArrayAdapter<PhotoList>{
private int resourse;
private List<PhotoList> PhotoLists;
FrameLayout item;
ImageView select;
public PhotoAdapter(Context context,int resourse,List<PhotoList> p){
super(context,resourse,p);
this.resourse=resourse;
this.PhotoLists=p;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
//读取目前位置物件
final PhotoList pList= getItem(position);
if(convertView==null){
item=new FrameLayout(getContext());
LayoutInflater li=(LayoutInflater)
getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
li.inflate(resourse,item, true);
}else {
item = (FrameLayout) convertView;
}
TextView textView=(TextView)item.findViewById(R.id.title);
TextView dateView=(TextView)item.findViewById(R.id.date_text);
select=(ImageView)item.findViewById(R.id.select_item);
ImageView photoView=(ImageView)
item.findViewById(R.id.content);
Bitmap bitmap=BitmapFactory.decodeFile(pList.getPhotoPath());
contextView.setImageBitmap(bitmap);
textView.setText(pList.getTitle());
dateView.setText(pList.getLocaleDate());
select.setVisibility(pList.isSelect()? View.VISIBLE : View.INVISIBLE);
return photoView;
}
每次在跑的时候,
都会出现The application may be doing too much work on its main thread.
请问应该要怎么解决呢..?
q
作者: winterfrost (冬霜)   2016-11-17 01:00:00
decode放到其他thread跑
作者: KeySabre (KeySabreur)   2016-11-17 16:03:00
不考虑用Glide之类library的帮忙吗
作者: givemepass (λ)   2016-11-17 22:00:00
感觉就是压到ui thread
楼主: DisdainU (茎茎濡吮汁)   2016-11-18 02:22:00
用了Glide后 变很顺! 谢谢建议!
作者: Jasonzheng (jason)   2016-11-18 10:56:00
给原po的建议是 搞懂执行绪 与 同步 异步的关系而非使用 library 却不了解个中道理换系统开发时 才能做到换汤不换药 :)
作者: ssccg (23)   2016-11-18 11:19:00
图片要用的顺,除了异步读取外还有cache/thumbnail这些问题,是应该要搞懂不过最终还是用library比较稳
作者: Jasonzheng (jason)   2016-11-18 13:34:00
同楼上 :)
楼主: DisdainU (茎茎濡吮汁)   2016-11-18 14:17:00
谢各位的建议,小弟会去弄懂的:)
作者: Msgbox (小哉)   2016-11-19 15:25:00
图片的大小也是要注意的地方?

Links booklink

Contact Us: admin [ a t ] ucptt.com