美文网首页
Glide优化和MediaStore.Images.Media.

Glide优化和MediaStore.Images.Media.

作者: o动感超人o | 来源:发表于2018-12-07 13:42 被阅读13次

1.MediaStore.Images.Media.insertImage导致的内存抖动问题

直接贴该方法的源码:

            /**
             * Insert an image and create a thumbnail for it.
             *
             * @param cr The content resolver to use
             * @param imagePath The path to the image to insert
             * @param name The name of the image
             * @param description The description of the image
             * @return The URL to the newly created image
             * @throws FileNotFoundException
             */
            public static final String insertImage(ContentResolver cr, String imagePath,
                    String name, String description) throws FileNotFoundException {
                // Check if file exists with a FileInputStream
                FileInputStream stream = new FileInputStream(imagePath);
                try {
                    Bitmap bm = BitmapFactory.decodeFile(imagePath);
                    String ret = insertImage(cr, bm, name, description);
                    bm.recycle();
                    return ret;
                } finally {
                    try {
                        stream.close();
                    } catch (IOException e) {
                    }
                }
            }

可以看到Bitmap bm = BitmapFactory.decodeFile(imagePath);这句话,说明android把这个图片读取到内存中了,在这一步内存会上升。把这个图片插入到系统相册后,方法结束,内存被回收,然后内存下降,今天也是调试一个OOM问题才看到这里

2.Glide优化

还有一个Glide的优化,在低配置手机内存不够的时候,应该清空Glide的缓存,修改我们自己的Application类,加入如下代码

    override fun onTrimMemory(level: Int) {
        super.onTrimMemory(level)
        //TRIM_MEMORY_UI_HIDDEN这个值代表了当前应用的UI已不再可见。通过它,我们就可以认为应用进入了后台。
        if(level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN){
            Glide.get(this).clearMemory()
        }
        Glide.get(this).trimMemory(level)
    }

    override fun onLowMemory() {
        super.onLowMemory()
        //内存低的时候清除Glide的缓存
        Glide.get(this).clearMemory()
    }

相关文章

网友评论

      本文标题:Glide优化和MediaStore.Images.Media.

      本文链接:https://www.haomeiwen.com/subject/vvcthqtx.html