我有以下情况:
活动1
public class Activity1 extends Activity{
ImageUtils.setArt(bitmap);
}
活动2
public class Activity2 extends Activity{
Bitmap b= ImageUtils.getArt();
}
ImageUtils
public class ImageUtils{
private static Bitmap mArtWork;
public static Bitmap getArt(){
return mArtWork;
}
public static void setArt(Bitmap art){
this.mArtWokr=art;
}
现在,我需要一个好的方法,在不同的Bitmap
之间分享Activity
。
由于static
变量在我的应用程序执行期间不会被收集垃圾,我需要一种在我的场景中共享图像的好方法。
我正在考虑使用singleton" ImageUtils"保存我的图像,然后访问。
我已经考虑并忽略了传递pareaceable位图,甚至通过意图共享URI,但那些结果不好。
有更好的方法吗?
答案 0 :(得分:1)
尝试使用内存缓存(例如LRU缓存)或磁盘缓存(例如文件I / O)。这是Google建议的如何缓存位图的方法。 Google文档为here。
设置yur LRU缓存的大小。如果整个图像大小超过您设置的LRU缓存的maiximun,则最近最少使用的图像将被删除。这就是LRU缓存的工作原理。如果将图像保存在磁盘上,请不要忘记在使用完图像后删除图像。
答案 1 :(得分:0)
通过内存传递位图不是一个好主意,因为位图不会在内存中压缩。也许尝试将其保存到临时文件中,并加载另一个活动...