Управление растровой памятью в Android - PullRequest
3 голосов
/ 01 августа 2011

Здравствуйте, я тестирую код для избежания сбоев памяти при загрузке большого количества растровых изображений.И у меня есть небольшой вопрос о следующем коде

    Bitmap bmp;
    long sizepreload, sizepostload,bmppixels;
    sizepreload= Debug.getNativeHeapAllocatedSize();

    bmp=getImageBitmapFromUrl("http://www.google.com/intl/en_com/images/srpr/logo2w.png");
    sizepostload=Debug.getNativeHeapAllocatedSize();
    bmppixels=bmp.getHeight()*bmp.getWidth();
    Log.d("bmp test","pre="+sizepreload+"\n" +
            "post="+sizepostload+"\n" +
            "bmppixels="+bmppixels+"\n"+
            "ratio="+(sizepostload-sizepreload)/bmppixels
            );

Возвращение этого фрагмента:

pre=4260464
post=4333112
bmppixels=26125
ratio=2

Таким образом, растровое изображение занимает 2 байта на пиксель.16 бит на пиксель является постоянным для всех растровых изображений или переменным (в зависимости от плотности экрана или качества изображения).Если его переменная, как я могу получить это соотношение из класса Bitmap?

заранее спасибо

Вот код для скачивания с URL:

public static Bitmap getImageBitmapFromUrl(String url){
    URL aURL;
    Bitmap result = null;
    try {
        aURL = new URL(url);
        URLConnection conn = aURL.openConnection();
        conn.connect();
        InputStream is = conn.getInputStream();
        result= BitmapFactory.decodeStream(is);
        is.close();

    } catch (Exception e) {
        result=null;
        e.printStackTrace();
    }
    return result;
}

1 Ответ

2 голосов
/ 02 августа 2011

Растровые изображения могут иметь размер до 4 байтов на пиксель, это зависит от формата растрового изображения.Это не зависит от плотности экрана.Однако при рисовании растрового изображения может потребоваться изменить его размер для плотности экрана, и это временно повлияет на вашу кучу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...