2011-07-14 15 views
5

Listeyi kaydırırken görüntüleri önbelleğe alarak ve Internet'ten telefon yerine yükleyerek ListView'imi hızlandırmaya çalışıyorum. Ancak, Drawable nesnesini serileştirmeye çalıştığımda bir istisna uyguladım. Bu benim fonksiyondur:Bir Drawable nesnesini Android'de serileştirme

java.io.NotSerializableException: kod sonuçlarının

private void cacheImage(Drawable dr, Article a){ 
    FileOutputStream fos; 
    try { 
     fos = openFileOutput(a.getArticleId().toString(), Context.MODE_PRIVATE); 
     ObjectOutputStream oos = new ObjectOutputStream(fos); 
     oos.writeObject(dr); 
     oos.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    }catch(IOException e){ 
     e.printStackTrace(); 
    } 
} 

Bu şık biraz android.graphics.drawable.BitmapDrawable

Ne seri hale getirmek için en iyi yaklaşımdır bu görüntüler

cevap

6

kullanarak bunları saklayabilir tüm Bitmaps o size yani internetten alındı. Diğer tüm çekmeceler büyük olasılıkla sizin apk'nizde. Eğer Bitmap sınıfını kullanabilirsiniz bildirilecek bir Bitmap yazmak istiyorsanız

:

private void cacheImage(BitmapDrawable dr, Article a){ 
    FileOutputStream fos; 
    try { 
     fos = openFileOutput(a.getArticleId().toString(), Context.MODE_PRIVATE); 
     dr.getBitmap().compress(Bitmap.CompressFormat.PNG, fos); 
     fos.flush(); 
     fos.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    }catch(IOException e){ 
     e.printStackTrace(); 
    } 
} 
+0

Bu işe yarıyor gibi görünüyor, ancak depolanmış görüntüleri benim uygulamamda okumaya nasıl başlarım? – karl

-2

aslında ne istediğini yapıyorsun http://code.google.com/p/shelves/ tarihinde Shleves projesini bakınız. Lütfen WeakReference ve SoftReference’e Görüntüler’i koruyorlar.

+0

svn checkout http://shelves.googlecode.com/svn/trunk/ –

İlgili konular