【问题标题】:OutOfMemory issue loading several pictures加载多张图片时出现 OutOfMemory 问题
【发布时间】:2013-10-21 11:52:24
【问题描述】:

我有九张图片要在活动开始时加载,但我遇到了 OutOfMemory 异常的问题。起初我将它们直接加载到 xml 设置它的 src。所以在获得 java.lang.OutOfMemory 之后,我意识到也许我需要更有效地加载图片,我创建了这个循环以在活动开始时执行:

 for(int i=0;i<9;i++){
        String background = "background"+(i+1);
        int idDrawable = getResources().getIdentifier(background, "drawable", getPackageName());
        int idPicture = getResources().getIdentifier(background, "id", getPackageName());

        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeResource(getResources(), idDrawable, options);

        options.inJustDecodeBounds = false;
        ImageView image = (ImageView) findViewById(idPicture);
        image.setImageBitmap(BitmapFactory.decodeResource(getResources(), idDrawable, options));
}

但我仍然有同样的 OutOfMemory 问题,有什么想法我做错了什么吗?

【问题讨论】:

  • 后台线程异步加载图片

标签: java android bitmap out-of-memory


【解决方案1】:

使用以下代码。 更改此代码

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), idDrawable, options);

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
options.inSampleSize = 4;
BitmapFactory.decodeResource(getResources(), idDrawable, options);

并删除此行

options.inJustDecodeBounds = false;

【讨论】:

  • 谢谢,这对我有用,但没有删除options.inJustDecodeBounds = false;,否则图像不会加载。
【解决方案2】:

自己进行一点谷歌搜索和搜索会引导您找到该 Android 开发人员指南

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多