我想知道如何在不同的活动中传递位图的更好方法

时间:2016-09-13 09:27:20

标签: android bitmap android-bitmap bitmapfactory bitmapsource

我有以下情况:

  

活动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,但那些结果不好。

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

尝试使用内存缓存(例如LRU缓存)或磁盘缓存(例如文件I / O)。这是Google建议的如何缓存位图的方法。 Google文档为here

  1. 将位图保存在Activity1的缓存中
  2. 在Activity2的缓存中获取位图,如果为null,则再次下载
  3. 设置yur LRU缓存的大小。如果整个图像大小超过您设置的LRU缓存的maiximun,则最近最少使用的图像将被删除。这就是LRU缓存的工作原理。如果将图像保存在磁盘上,请不要忘记在使用完图像后删除图像。

答案 1 :(得分:0)

通过内存传递位图不是一个好主意,因为位图不会在内存中压缩。也许尝试将其保存到临时文件中,并加载另一个活动...