看板 AndroidDev 關於我們 聯絡資訊
小弟是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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.240.176.158 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1479314440.A.CE6.html
winterfrost: decode放到其他thread跑 11/17 01:00
KeySabre: 不考慮用Glide之類library的幫忙嗎 11/17 16:03
givemepass: 感覺就是壓到ui thread 11/17 22:00
DisdainU: 用了Glide後 變很順! 謝謝建議! 11/18 02:22
Jasonzheng: 給原po的建議是 搞懂執行緒 與 同步 非同步的關係 11/18 10:56
Jasonzheng: 而非使用 library 卻不了解箇中道理 11/18 10:56
Jasonzheng: 換系統開發時 才能做到換湯不換藥 :) 11/18 10:57
ssccg: 圖片要用的順,除了非同步讀取外還有cache/thumbnail這些 11/18 11:19
ssccg: 問題,是應該要搞懂不過最終還是用library比較穩 11/18 11:21
Jasonzheng: 同樓上 :) 11/18 13:34
DisdainU: 謝各位的建議,小弟會去弄懂的:) 11/18 14:17
Msgbox: 圖片的大小也是要注意的地方? 11/19 15:25