سؤال

لقد استعرضت بعض المنشورات حول التحميل كسول ، لكنني أعتقد أن مشكلتي مختلفة بعض الشيء.

لديّ معرض (معرض صفي) الذي يعرض 20 صورًا كبيرة الحجم (400-500K لكل منهما). لا يمكنني تحميلهم جميعًا إلى المعرض لأنني أحصل على استثناء OutofMemory.
لذلك ، قمت بإنشاء مجموعة من 20 مقاطعًا وملفقت في البداية أول 9 عناصر (الصور تأتي من الويب) وضبط كل الباقي على NULL. كانت نيتي هذا: على اليمين إلى اليمين ، جلب العنصر رقم. 10 وتعيين على العنصر الخالي لا. 0. على قشر آخر على عنصر الجلب اليمين رقم. 11 وتعيين على العنصر الخالي لا. 1 إلى خالية. نفس المنطق على اليسار اليسار.

المشكلة هي أنني أستطيع أن أتعامل بشكل أسرع من العناصر التي يتم جلبها. يحتوي معرضي على baseadapter ويبدو GetView () شيئًا من هذا القبيل:

public View getView(int position, View  convertView, ViewGroup  parent){
     ImageView imageView = new ImageView();
     imageView.setDrawable(imageArray[position];
     ....
     ....

     return imageView;
}

كيف يمكنني إخبار GetView () - إذا كان ImageArray [الموضع] لا يزال فارغًا ، فقم بإظهار مربع حوار "تحميل ..." وبمجرد تعيينه كرر نفسك بنفس الموضع؟
لا أريد أن أرى ImageView فارغًا ثم وضعت على الطيران. أريد ألا أتمكن من رؤية ImageView على الإطلاق حتى يتم تعيينه.

شكرًا.

هل كانت مفيدة؟

المحلول

تم تصميم المعرض لتجربة سلسة. سيكون واجهة مستخدم سيئة للغاية إذا قمت بحظر الشاشة ولم تقم بالتبديل إلى الصورة التالية حتى يتم جلبها. وبهذه الطريقة لن يتمكن المستخدم من القذف على الإطلاق. يجب عليك عرض بعض مؤشر التحميل بدلاً من الصورة أثناء التحميل.

أعتقد أن السيناريو الخاص بك شائع إلى حد ما. يجب عليك تنزيل الصور وعرضها. إذا حصلت غريب خارج مشكلة الذاكرة أثناء تحميل صورة على كائن نقط.

إذا كان لا يزال هناك OutofMemory ، فيجب عليك إزالة نقار النقط من الذاكرة وتخزينها إلى SD. لذلك عندما مرة أخرى ، يمكنك تحميل الصور من SD مرة أخرى ، سيكون سريعًا بما فيه الكفاية. وسيكون استهلاك الذاكرة أقل. كما تقترح ، يمكنك الحصول على 10 صور حديثة في الذاكرة وآخرون مخبأة في SD.

يمكنك إلقاء نظرة على رمز العينة الخاص بي تحميل كسول للصور في ListView. في الواقع ، إنه محول ListView ولكن يمكنك تطبيقه على معرض مع تعديلات طفيفة. أعتقد أنه سيفعل ما تحتاجه بالضبط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top