lap602651857
2018-05-30 07:00
采纳率: 25%
浏览 697

Android 多次拍照上传内存溢出 上个被删掉了 血亏一波

完整代码请看我博客,解决了我会悬赏
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 3:

                if (Bimp.tempSelectBitmap.size() == a) {
                    a = 0;
                    releaseMessage();
                    dialog.dismiss();
                    return;
                }
                String path = Bimp.tempSelectBitmap.get(a).getImagePath();
                if (path == null) {
                    Bitmap bm = Bimp.tempSelectBitmap.get(a).getBitmap();
                    ByteArrayOutputStream stream = new ByteArrayOutputStream();
                    bm.compress(Bitmap.CompressFormat.PNG, 100, stream);
                    if (bm != null) {
                        final File tempFile = new File(getCacheDir(),
                                "temp.png");
                        try {
                            byte[] dataBytes = stream.toByteArray();
                            FileOutputStream fileOut = new FileOutputStream(
                                    tempFile);
                            fileOut.write(dataBytes);
                            fileOut.close();
                        } catch (FileNotFoundException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        if (tempFile.exists()) {
                            falg1 = 0;
                            final String pic_path = tempFile.getPath();
                            String targetPath = getTempDirectoryPath()
                                    + "compressPic.jpg";
                            // 调用压缩图片的方法,返回压缩后的图片path
                            final String compressImage = PicUtils
                                    .compressImage(pic_path, targetPath, 50);
                            final File compressedPic = new File(compressImage);
                            if (compressedPic.exists()) {
                                uploadPics(compressedPic);
                            } else {// 直接上传
                                uploadPics(tempFile);
                            }
                            ++a;
                        }
                    }

                }
                if (path != null) {
                    falg1 = 1;
                    String targetPath = getTempDirectoryPath()
                            + "compressPic.jpg";
                    // 调用压缩图片的方法,返回压缩后的图片path
                    final String compressImage = PicUtils.compressImage(path,
                            targetPath, 50);
                    final File compressedPic = new File(compressImage);
                    if (compressedPic.exists()) {
                        uploadPics(compressedPic);
                    } else {// 直接上传
                        uploadPics(new File(path));
                    }
                }
                ++a;
                break;

        }
    }
};
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • bilionera 2018-05-30 09:22
    已采纳

    你拿到的图片有经过压缩吗,使用过bitmap后有释放吗,你这代码还有很长的路要走啊

    打赏 评论
  • weixin_38722949 2018-05-30 07:22

    可能是有缓存,可以将手机的app卸掉再安装

    打赏 评论
  • 边缘颓废之 2018-05-31 06:37

    图片命名还是以当前系统时间命名好一点 ,不要重复, 如果相同命名情况下,万一我正在上传,却被再次拍照替换了

    打赏 评论

相关推荐 更多相似问题