android 传递图片

来源:互联网 发布:境外直播软件下载 编辑:程序博客网 时间:2024/05/20 14:18

当我在activity之间传递图片时,原本使用


Bitmap bitmap = img.getDrawingCache();  intent.putExtra("bitmap", bitmap);    bitmap = intent.getParcelableExtra("bitmap");


是可以传递的,但是获取的图片首先清晰度不行,而且时常会报一些乱七八糟的bug,但基本用起来没问题,所以也没在意。

这段时间突然发现img.getDrawingCache();获取的值为空,但是不知道为啥。

之后想建一个全局变量,来存储这个bitmap,但是Davlik虚拟机的垃圾回收器会帮助我们回收不需要的内存垃圾。事实上,回收器并不可靠,尤其是手机上,是更加的不可靠。 因此,除非我们要使自己的程序变得越来越糟糕,否则尽量远离static。 
注:如果经常使用static的Bitmap、Drawable等变量。可能就会抛出一个在Android系统中非常著名的异常
ERROR/AndroidRuntime(4958): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget 

之后就使用在Application中存一个BitMap,因为Application的生命周期就是应用程序的生命周期。然后在Application中get and set 这个BitMap,在其他的页面上调用。


  private Bitmap bitmap;    public Bitmap getBitmap() {        return bitmap;    }    public void setBitmap(Bitmap bitmap) {        this.bitmap = bitmap;    }MyApplication application = (MyApplication) getApplication();Bitmap bitmap = application.getBitmap();




0 0