功能是拍照上传,每拍一张就在sd卡读取,上传,然后记录返回的id,并把原图显示到app里。每次都是第三张的时候,app就崩溃。

解决方案 »

  1.   

    用Luban把图片压缩一下
      

  2.   

    你这是内存溢出了,这需要你压缩你的图片。通过Bitmap.createScaledBitmap(bitmap , width, height, true)方法
    能够得到指定高宽的Bitmap 。当然你也可以在网上查阅是否有更优的压缩方法
      

  3.   

    内存溢出,压缩一下就好。
    private String fileName= "/sdcard/DCIM/Camera/XXXXX.jpg";//路径
    BitmapFactory.Options options = new BitmapFactory.Options();
                    options.inSampleSize = 2;//图片宽高都为原来的二分之一,即图片为原来的四分之一
                            Bitmap b = BitmapFactory.decodeFile(fileName, options);
      

  4.   

    Luban压缩
      

  5.   

    我给你推荐一个  图片选择 和拍照 库吧  有压缩 和裁剪功能  PictureSelector  百度一下 看他的用法  如果帮到了你希望给分哦
      

  6.   

    Android大佬
      

  7.   

    加载图片的问题,溢出了,不要直接set
      

  8.   

    图片太大了 用第三方框架压缩一下图片加载 或者用Glide框架加载 不要直接setBackground()
      

  9.   

    要么把图片压缩之后展示,要么去Manifest申请更大的内存
      

  10.   

    java中常见的内存溢出问题。
    图片资源没有及时释放,或者就是手机性能实在太差,可以忽略该机型适配。
      

  11.   

    AndroidManifest.xml文件中的 <application
            ..........
            android:largeHeap="true"
            ..........
           >
    log已经说的很清楚了:由于图片过大,没有足够的内存加载,所以对图片压缩等操作是没办法解决BUG的,加载不了图片,哪来后面的图片压缩。
    最好的办法是向系统申请更大内存:android:largeHeap="true"。还有bitmap资源要及时释放,否则容易造成内存泄漏。但是你的log提示是由于图片过大,没有足够的内存加载。
      

  12.   

    不建议用楼上(21楼)这种方法,给app申请了更大的内存会使得你的app开着的时候会占用更多内存的.系统分配给app的内存是随着系统版本提高而增加的,现在都到8.0了,如果还OOM的话,多数是自己的代码问题.图片太大,现在都已经不需要自己写什么弱引用来处理了.建议用glide或picasso之类的第三方库来处理图片的显示.这样就可以尽量避免OOM了,他们会自动处理图片回收释放的问题.不过估计楼主是新手,最好还是了解一下图片为什么会OOM的原理,对以后开发有用.