Android:位图导致内存不足错误

Android:位图导致内存不足错误,android,bitmap,Android,Bitmap,我已经被这个android错误弄疯了,在浏览之前关于这个错误的帖子时,没有一个解决方案对我有帮助 当然,我说的是被称为“安卓(数字)字节分配内存不足”的全能杀手。我正在尝试创建一个照片上传程序,在第3张可能是第4张图像后,我的应用程序崩溃。我知道停止崩溃以使用catch异常,但这不是我的问题。我在这里是想问社区有没有解决这个字节分配错误的方法 下面是我的一段代码,涉及位图 String post = editTextPost.getText().toString().trim()

我已经被这个android错误弄疯了,在浏览之前关于这个错误的帖子时,没有一个解决方案对我有帮助

当然,我说的是被称为“安卓(数字)字节分配内存不足”的全能杀手。我正在尝试创建一个照片上传程序,在第3张可能是第4张图像后,我的应用程序崩溃。我知道停止崩溃以使用catch异常,但这不是我的问题。我在这里是想问社区有没有解决这个字节分配错误的方法

下面是我的一段代码,涉及位图

        String post = editTextPost.getText().toString().trim();
        // get the photo :
        Bitmap image = ((BitmapDrawable)postImage.getDrawable()).getBitmap();

        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        // compress the image to jpg format :
        image.compress(Bitmap.CompressFormat.JPEG, 45, byteArrayOutputStream);
        byte[] imageBytes = byteArrayOutputStream.toByteArray();
        String encodeImage = Base64.encodeToString(imageBytes,Base64.DEFAULT);
        // Recycle bitmap :
        image.recycle();
        image=null;

        // send data :
        sendPost p = new sendPost(this);
        p.execute(post, encodeImage);
        imageBytes=null;

我不使用任何库,并希望保持这种方式,但如果使用库是唯一的选择,我会使用一个。希望有人能提供帮助。

如果位图附加到视图(例如图像视图),则不会完全回收。如果执行
ImageView.setImageBitmap(位图)
,则需要在执行
ImageView.setImageBitmap(null)之前清除它
并清除对任何视图的任何其他引用。

完成图像上传后,释放“
后期图像”
占用的内存-


这将释放与
后期图像相关的位图占用的所有内存

一般回答:

当您上传文件时,您需要打开一个流到服务器并 您的文件在同一时间。以1 MB的大小逐块读取和写入 例子。这样就不会出现内存不足异常


我不相信回收会立即从记忆中删除图像。它取决于垃圾收集器。循环利用并不强迫它。
postImage.setImageDrawable(null);