APP由于大位图而崩溃

时间:2017-05-01 11:27:22

标签: android bitmap

我的问题是我的APP因大型位图而崩溃。但我不明白为什么。我正在使用我的方法(你可以在下面看到),一切都很好,即使它不是最好的。但是当我决定添加更多的imageViews时,APP崩溃了。 (仅适用于大尺寸图像) 任何建议都会对我有帮助。

ImageView im = (ImageView) findViewById(R.id.myimage);
        im.setImageBitmap(BitmapFactory.decodeFile(picturePath));
        BitmapDrawable abmp = (BitmapDrawable) im.getDrawable();
        ImageView im1 = (ImageView) findViewById(R.id.vienas);
        im1.setImageBitmap(BitmapFactory.decodeFile(picturePath));
        BitmapDrawable abmp1 = (BitmapDrawable) im1.getDrawable();
        ImageView im2 = (ImageView) findViewById(R.id.du);
        im2.setImageBitmap(BitmapFactory.decodeFile(picturePath));
        BitmapDrawable abmp2 = (BitmapDrawable) im2.getDrawable();
        bmp = abmp.getBitmap();
        bmp = abmp1.getBitmap();
        bmp= abmp2.getBitmap();

        if (picturePath != null && bmp != null) {
            int height = bmp.getHeight(), width = bmp.getWidth();

            **if (height > 1280 && width > 960) {
                Bitmap resized = Bitmap.createScaledBitmap(bmp,(int)(bmp.getWidth()*0.8), (int)(bmp.getHeight()*0.8), true);
                bmp = resized;
                im.setImageBitmap(bmp);
                im.setVisibility(View.VISIBLE);
                im1.setImageBitmap(bmp);
                im1.setVisibility(View.VISIBLE);
                im2.setImageBitmap(bmp);
                im2.setVisibility(View.VISIBLE);**

            } else {

                im.setImageBitmap(bmp);
                im.setVisibility(View.VISIBLE);
                im1.setImageBitmap(bmp);
                im1.setVisibility(View.VISIBLE);
                im2.setImageBitmap(bmp);
                im2.setVisibility(View.VISIBLE);

            }

        }

logcat的: 过程:com.example.g.eternalstudios,PID:30483                                                                               java.lang.OutOfMemoryError:无法分配带有16776176个空闲字节的30483652字节分配和25MB直到OOM                                                                                   at dalvik.system.VMRuntime.newNonMovableArray(Native Method)                                                                                   在android.graphics.BitmapFactory.nativeDecodeStream(本机方法)                                                                                   在android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:882)                                                                                   在android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:858)                                                                                   在android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:478)                                                                                   在android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:516)                                                                                   在com.example.g.eternalstudios.MainActivity.onActivityResult(MainActivity.java:208)                                                                                   在android.app.Activity.dispatchActivityResult(Activity.java:7137)                                                                                   在android.app.ActivityThread.deliverResults(ActivityThread.java:4921)                                                                                   在android.app.ActivityThread.handleSendResult(ActivityThread.java:4968)                                                                                   在android.app.ActivityThread.access $ 1600(ActivityThread.java:222)                                                                                   在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1849)                                                                                   在android.os.Handler.dispatchMessage(Handler.java:102)                                                                                   在android.os.Looper.loop(Looper.java:158)                                                                                   在android.app.ActivityThread.main(ActivityThread.java:7229)                                                                                   at java.lang.reflect.Method.invoke(Native Method)                                                                                   在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1230)                                                                                   在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)     在此处输入代码     在这里输入代码

0 个答案:

没有答案
相关问题