Android 另一个';位图大小超过VM预算';

Android 另一个';位图大小超过VM预算';,android,bitmap,out-of-memory,Android,Bitmap,Out Of Memory,可能重复: 我知道有很多关于这个allready的话题,但不管我怎么尝试,它似乎都不起作用 我尝试了几种onDestroy技巧,包括循环使用位图、将其设置为null等。 不确定我的代码是否与其他情况不同?似乎是这样的。。。 我使用的是TouchImageView扩展,所以我可以使用收缩缩放,这样可能会使它更复杂 不管怎样,这是我的密码。请任何人指出我如何解决这个问题(顺便说一句,不要缩小位图的尺寸)好吗 正如您所说,您已经使用了从种植到回收的所有东西,现在也可以尝试使用weakreferen

可能重复:

我知道有很多关于这个allready的话题,但不管我怎么尝试,它似乎都不起作用

我尝试了几种onDestroy技巧,包括循环使用位图、将其设置为null等。 不确定我的代码是否与其他情况不同?似乎是这样的。。。 我使用的是TouchImageView扩展,所以我可以使用收缩缩放,这样可能会使它更复杂

不管怎样,这是我的密码。请任何人指出我如何解决这个问题(顺便说一句,不要缩小位图的尺寸)好吗


正如您所说,您已经使用了从种植到回收的所有东西,现在也可以尝试使用weakreference

如果这也没有帮助,那么代码中可能存在内存泄漏

请看我对同一问题的回答:

这是一个通用的答案,请尝试我提到的所有方法。其中一个应该为您工作:)


谢谢。

我注意到onDestroy()没有被调用,因为我使用的是tabhost。所以我试着在它里面放一个ontablistener,然后手动调用ondestroy,但是当活动还没有开始的时候它就会被调用,所以我尝试在我把recycle()的东西放进去的时候使用一个循环的位图:我已经想出了一个阻止内存泄漏的好方法,那么这个主题可以重新打开,这样我就可以发布它了吗?我认为其他人可能会从中受益。weakreference技巧似乎不起作用。尝试使用BitmapFactory中的所有选项。创建位图时使用选项。还考虑将位图缩放到更小的大小,因为它可能占用了太多内存。我已经尝试过了,但是图像看起来像垃圾。你检查过你的代码是否有内存泄漏?是的。当我点击mijn tabhost中的选项卡时,我看到外部页面越来越大。在4页活动之后,它在内存中加载了4个图像,然后崩溃
    public class PageActivity extends Activity {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.page);

            Intent parent = getIntent();
            int pagenumber = parent.getIntExtra("pagenumber", 1);
            int resID = getResources().getIdentifier("page"+pagenumber , "drawable", getPackageName());

            TouchImageView img = new TouchImageView(this);
            Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resID);
            img.setImageBitmap(bitmap);
            img.setMaxZoom(4f);

            LinearLayout rootview = (LinearLayout) findViewById(R.id.RootView);
            rootview.addView(img);
        }
    }