[問題] 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