簡體   English   中英

內存不足異常

[英]out of memory exception

我是Android新手。 我正在用sd卡形式列出圖像。以下代碼給我錯誤“ 614416字節分配的內存不足”。

public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater layoutInflater = (LayoutInflater) ctx
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = layoutInflater.inflate(R.layout.ll_sponsor_list_item,
                parent, false);

        final ImageView img = (ImageView) convertView
                .findViewById(R.id.imggrid_item_image);
        String imgurl = ImageName.get(position);

        AsyncImageLoaderv asyncImageLoaderv = new AsyncImageLoaderv();
        Bitmap cachedImage = asyncImageLoaderv.loadDrawable(imgurl,
                new AsyncImageLoaderv.ImageCallback() {
                    public void imageLoaded(Bitmap imageDrawable,
                            String imageUrl) {
                        img.setImageBitmap(imageDrawable);


                    }
                });
        img.setImageBitmap(cachedImage);
        cachedImage.recycle();
        return convertView;
    }

類:

class AsyncImageLoaderv  {
    int width;
    int height;
    float aspectRatio;
    int newWidth;
    int newHeight;

    public Bitmap loadDrawable(final String imageUrl,
            final ImageCallback imageCallback) {
        final Handler handler = new Handler() {
            @Override
            public void handleMessage(Message message) {
                imageCallback.imageLoaded((Bitmap) message.obj, imageUrl);
            }
        };
        new Thread() {
            @Override
            public void run() {
                try {
                    Log.d("ur", imageUrl);
                    Bitmap drawable = BitmapFactory.decodeFile(imageUrl);
                    width = drawable.getWidth();
                    height = drawable.getWidth();
                    aspectRatio = (float) width / (float) height;
                    newWidth = 98;
                    newHeight = (int) (98 / aspectRatio);
                    Bitmap.createScaledBitmap(drawable, newWidth, newHeight,
                            true);
                    Message message = handler.obtainMessage(0, drawable);
                    handler.sendMessage(message);
                    //this.sleep(1000);

                } catch (Exception e) {
                    Log.e("thread stellent", e.toString());
                }
            }
        }.start();
        return null;
    }

    public interface ImageCallback {
        public void imageLoaded(Bitmap imageBitmap, String imageUrl);
    }
}

當我回答這個問題時:

android-內存不足錯誤,由decodefile或decodeStream將選定的Uri轉換為位圖

位圖不能容納重量級的圖片。 閱讀這篇文章,可以減小圖像尺寸。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM