android 图片内存溢出问题解决与优化

android 4.0 內存使用管理
   final int memClass = ((ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();
   final int cacheSize = 1024 * 1024 * memClass / 8;
        imageCache = new LruCache<Integer, Bitmap>(cacheSize)
        {
            @Override
            protected int sizeOf(Integer key, Bitmap value)
            {
               return value.getRowBytes() * value.getHeight();
           }
    }

這個內存管理的效果很好。
在獲取圖片的時候也使用

        /**
         * 以省記憶體的方式讀取本地資源的圖片
         * 
         */
        public static Bitmap readBitmap(Context context, int resId){ 
            BitmapFactory.Options opt = new BitmapFactory.Options();
            opt.inPreferredConfig = Bitmap.Config.RGB_565;
            opt.inPurgeable = true;
            opt.inInputShareable = true;
            InputStream is = context.getResources().openRawResource(resId);
            Bitmap bm = BitmapFactory.decodeStream(is, null, opt);
            SoftReference<Bitmap> softBitmap = new SoftReference<Bitmap>(bm);
            
            return softBitmap.get();
        }
很大程度上減少內存溢出問題

posted @ 2013-07-31 19:13  山顶的鱼  阅读(192)  评论(0编辑  收藏  举报