۱۳۹۴/۰۵/۲۵, ۰۲:۲۹ ب.ظ
برای لود شدن عکس از Asynctask به صورت زیر استفاده کردم:در کل سرعت لود شدن بهتر شد (خیلی زیاد نه) اما مهمتر از اون اینکه دیگه برنامه crash نمیشد.(قبلا داخل thread اصلی برنامه این گریدویو ساخته میشدکه خیلی خیلی بد بود)
اگر اینطور استفاده کنم وقتی اسکرول می کنم تمام عکسهای قبلی در position های قبلی را می بینم که بسیار بد بود:اما من کلا اون if_else رو کامنت کردم و بعد از اسکرول سریع: یه عکس default رو میبینم مثلا(ic_launcher ) که خیلی بهتر شد اما چون عکسها زیاد هست( 100 به بالا)
اگر کاربر خیلی سریع با اسکرول کردن به سمت پائین بیاد باید چند ثانیه حدودا 5 الی 6 ثانیه برای دیدن عکس شماره 80 یا 90 صبر کند که اگر تعدا عکس ها بیشتر شود مطمئنا این زمان بیشتر خواهد شد.(در ضمن من تا جایی که ممکن بود سایز thumbnail رو کم کردم که سریعتر لود شود )
آیا راه دیگری برای سریعتر شدن این برنامه هست؟
کد پیاچپی:
new AsyncTask<ViewHolder, Void, Bitmap>() {
private ViewHolder v;
@Override
protected Bitmap doInBackground(ViewHolder... params) {
v = params[0];
Bitmap bm = decodeSampledBitmapFromUri(mylist.get(position).getmypath(), 50, 50);
return bm;
}
@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);
v.myimage.setImageBitmap(result);
}
}
اگر اینطور استفاده کنم وقتی اسکرول می کنم تمام عکسهای قبلی در position های قبلی را می بینم که بسیار بد بود:
کد پیاچپی:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some
// attributes
convertView.setTag(holder);
}
else {
convertView = (View) convertView;
اگر کاربر خیلی سریع با اسکرول کردن به سمت پائین بیاد باید چند ثانیه حدودا 5 الی 6 ثانیه برای دیدن عکس شماره 80 یا 90 صبر کند که اگر تعدا عکس ها بیشتر شود مطمئنا این زمان بیشتر خواهد شد.(در ضمن من تا جایی که ممکن بود سایز thumbnail رو کم کردم که سریعتر لود شود )
آیا راه دیگری برای سریعتر شدن این برنامه هست؟