Glide入门教程(6)请求优先级

       开发中经常会遇到app需要同时加载多个图片的情况。假设你正在创建一个信息展示界面,包含顶部的一个主要照片和底部的2个并不重要的小图。对于用户体验,我们最好先加载主要照片,然后再加载底部不紧急的图片。Glide里的.priority()方法和Priority的枚举变量可以实现上述需求。

Priority枚举变量

       一共有四个不同的枚举变量。下面以递增方式列出:

  • Priority.LOW
  • Priority.NORMAL
  • Priority.HIGH
  • Priority.IMMEDIATE

       优先级并不是非常严格的。Glide会将它们作为一个指导来最优化处理请求。但并不意味着所有的图片都能够按请求的顺序加载。然而在某些重要的图片使用场景,你有这样的需求,可以利用优先级。

使用例子: 带有子图的主要元素

       实现一个信息细节界面,其中包含1个顶部的主要图片和底部的2个小图。对于最佳的用户体验,主要图片需要优先被加载。这样,我们分配Priority.HIGH给它。理论上,那就够了。但为了使这个例子显示更明显,我们通过调用.priority(Priority.LOW)分配给底部的图片低优先级权限:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void loadImageWithHighPriority() {  
Glide
.with( context )
.load( UsageExampleListViewAdapter.eatFoodyImages[0] )
.priority( Priority.HIGH )
.into( imageViewHero );
}

private void loadImagesWithLowPriority() {
Glide
.with( context )
.load( UsageExampleListViewAdapter.eatFoodyImages[1] )
.priority( Priority.LOW )
.into( imageViewLowPrioLeft );

Glide
.with( context )
.load( UsageExampleListViewAdapter.eatFoodyImages[2] )
.priority( Priority.LOW )
.into( imageViewLowPrioRight );
}

       运行这个例子会发现,不管是多大的图片,几乎所有情况下主要的图片都会被优先显示。(图片越大,需要更多的处理时间)

       权限优先级是非常有用的,但并不能总是完美地解决问题。我们假设要下载一个非常大的图片,不管你设置多高的权限,它仍然会花费较长时间去下载和处理。

参考资料:
签到钱就到 Glide入门教程——8. 请求优先级

Fork me on GitHub