2014-02-24 84 views
1

当我的应用程序启动时(主要是第一次启动应用程序时),我有超过10张图像从服务器动态获取。SharedPreference或Map <String,SoftReference <Bitmap>>

这样做的最佳做法是什么?为什么?

  1. 保持一个Map<String, SoftReference<Bitmap>>在那里我将有一个HashMap其中的元素SoftReference的。

  2. 使用

String encodedImage = Base64.encodeToString(imgData, Base64.DEFAULT); 
SharedPreferences shre = PreferenceManager.getDefaultSharedPreferences(this); 
Editor edit=shre.edit(); 
edit.putString("image_data",encodedImage); 
edit.commit(); 

有人能说明各个优势保存byte[]

回答

1

其实你应该使用类似于图像缓存的东西。例如,您可以使用UniversalImageLoader库。它将帮助您优化应用程序的内存使用情况。

有很多在网络exapmles,但basicaly一切都归结为一行代码:

imageLoader.displayImage(imageUri, imageView); 

还可以点击这些链接:

  1. Displaying Bitmaps Efficiently - 从Android开发者网站
  2. Picaso Library - 来自Square,这就是杰克沃顿的作品。
+0

谢谢你的回复。 检查缓存机制。 但是你能说,我们什么时候可以使用选项2? 它在任何情况下都会有什么优势? – JnJ11

+0

我不这么认为。你看,你的代码有可能会导致OutOFMemoryError。特别是如果'imgData'会很大。想象一下你的10张图片是高质量的,如果它运行在低端设备上,你的应用会崩溃。 –

+0

恕我直言'SharedPreference'应该用来存储一些快速访问的数据。计数器,字符串等 –

相关问题