glide库的学习

  • 具有强大的缓存功能
  • 可以适配显示多种类型的图片(字节流、resource中的、网络url、uri等等)
  • 还可以设置占位图,placehoulder()、 error()(网络异常的时候显示)
  • Glide可以帮助我们判定传进来的图片类型png、jpg还是gif!当然我们还是可以设定我们加载的图片是静态还是动态,使用asBitmap(),如果传进去的是一个gif,那么会定格在动画的第一帧处,同理,asGif()
  • 不需要担心因为图片太多或者图片太大而导致OOM或者内存浪费,因为Glide也会自己做出判断,要多少加载多少。当然可以使用override(len, width)来自己设定
  • with函数里面都是先调用RequestManagerRetriever的静态get()方法得到一个RequestManagerRetriever对象,这个静态get()方法就是一个单例实现。(等同于getInstance)
    • 关于单例实现,是java里面的设计模式之一,属于创建型模式,主要特点就是这个类在自己内部创建实例,而且设定构造函数为private,只允许自己创建有且仅有一个实例,提供一个getInstance的接口给外面使用。
    • 注意:单例实现有很多种,有线程不安全的(只做简单判断的),有线程安全的。
    • 其中构建种类有:懒汉式和饿汉式
    • 加上锁(synchronize)可以实现线程安全,但是会导致效率降低
    • 类加载时就实例化,是饿汉式,虽然线程安全,但是会造成内存浪费,产生垃圾对象
    • 关于保证线程安全(实现同步)的synchronize和volatile的理解
  • 待学习。。