(随记一)Android设计模式解析与实战_面对对象六大原则之单一职责原则

(随记一)Android设计模式解析与实战_面对对象六大原则之单一职责原则:

* 定义 : 一个类而言,应该竟有一个引起它变化的原因
* 简单来说就是 : 一个类应该是一组相关性很高的函数、数据的封装。
* 原则:两个完全不一样的功能不应该放在一个类中。一个类应该是一组相关性很高的函数、数据的封装。不断审视自己代码,根据具体业务与功能去划分

代码示例

        public class ImageLoader {
            //图片缓存
            ImageCache mImageCache = new ImageCache();
            private final ExecutorService mExecutorService;

            //线程池数量为cpu数量
            public ImageLoader() {
                mExecutorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
            }

            private void displayImage(final String url, final ImageView imageView) {
                final Bitmap bitmap = mImageCache.get(url);
                if (bitmap != null) {
                    imageView.setImageBitmap(bitmap);
                    return;
                } else {
                    imageView.setTag(url);
                    mExecutorService.submit(new Runnable() {
                        @Override
                        public void run() {
                            Bitmap netBitmap = downloadImage(url);
                            if (netBitmap == null) {
                                return;
                            } else {
                                if (imageView.getTag().equals(url)) {
                                    imageView.setImageBitmap(netBitmap);
                                }
                                mImageCache.put(url, netBitmap);
                            }
                        }
                    });

                }
            }

            /**
             * 下载图片
             *
             * @param imageUrl
             * @return
             */
            public Bitmap downloadImage(String imageUrl) {
                Bitmap bitmap = null;
                try {
                    URL url = new URL(imageUrl);
                    final HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                    bitmap = BitmapFactory.decodeStream(urlConnection.getInputStream());
                    urlConnection.disconnect();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return bitmap;
            }
        }

-

        /**
         * Created by Administrator on 2016/12/16.
         * 图片缓存类
         */

        public class ImageCache {
            LruCache<String, Bitmap> mImageCache;

            public ImageCache() {
                initImageCache();
            }

            private void initImageCache() {
                //计算可使用的最大内存
                final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
                //取四分之一内存作为缓存
                final int cacheSize = maxMemory / 4;
                mImageCache = new LruCache<String, Bitmap>(cacheSize) {
                    @Override
                    protected int sizeOf(String key, Bitmap value) {
                        return value.getRowBytes() * value.getHeight() / 1024;
                    }
                };
            }

            /**
             * 写入缓存
             *
             * @param url
             * @param bitmap
             */
            public void put(String url, Bitmap bitmap) {
                mImageCache.put(url, bitmap);
            }

            /**
             * 获得缓存
             *
             * @param url
             * @return
             */
            public Bitmap get(String url) {
                return mImageCache.get(url);
            }


        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值