未分析完
csdn草稿不发布关机会消失,但还会在移动版存在,而且不可继续编辑,所以草稿先发布,后期补充。
执行代码:
Glide.with(this)
.load(R.drawable.ic_launcher)
.into(iv);
流程分析:
- GlideBuilder包含: new Engine() Glide对象
- RequestManager包含: Glide对象 Context对象 TargetTracker对象
单例Glide过程:
- 资源执行器sourceExecutor:一个根据计算机可用核心数创建的不高于4个线程容量的线程池
- 磁盘缓存执行器diskCacheExecutor:一个固定一个线程容量的线程池。
- 动画执行器animationExecutor:根据计算机可用核心数创建的线程池,如果可用核心数大于4,则容量为2,否则为1。
- 记忆大小计算器memorySizeCalculator:
a. arrayPoolSize:高内存设备4M,低内存设备2M
b. maxSize:根据Android应用的基本内存和设备内存高低计算出来的最大内存
c. 屏幕的宽高信息,最大的bigmap缓存targetBitmapPoolSize,最大内存缓存targetMemoryCacheSize
d. 可用内存availableSize = maxSize - arrayPoolSize,如果bigmap缓存和内存缓存占用之和大于可用内存,则按照比例分配最高内存
。- 连接监视器工厂connectivityMonitorFactory:
- 图片缓存池BitmapPool:如果memorySizeCalculator中targetBitmapPoolSize有值,创建LruBitmapPool,否则创建BitmapPoolAdapter。
- 文件置换固定大小的数组池arrayPool。
- 缓存资源的Lru内存缓存memoryCache。
- 管理DiskLruCache的o工厂类diskCacheFactory。
- 负责启动加载和管理活动和缓存资源的发动机
engine
。- 加载图像时监听请求状态的类的集合defaultRequestListeners。
- 用于创建新的RequestManager或从activity和fragment中检索现有方法的的静态方法集合requestManagerRetriever。
创建Glide对象
- 返回RequestManager对象,用于管理和启动Glide请求。
a. 如果不在主线程,单例模式创建RequestManager绑定新创建的ApplicationLifecycle
b. 如果在主线程,单例模式创建RequestManager