在 Picasso 转换中保持状态
Keeping state in a Picasso Transformation
我需要在转换中应用不同的边框粗细。也就是说,对于 GridView
.
中的每个单元格,左侧可以是 10dp,顶部可以是 8dp 等
我有一个 Transformation
,其中包含我在 transform
中使用 Canvas 绘图基元应用的厚度的局部变量。这一切正常,绘图正在进行中。
我的问题:因为每个转换都有不同的参数,这意味着我必须为每个单元格(在我的适配器中)创建一个新的转换,设置它的属性并将其传递给 Picasso 构建器。
我在别处读到,不应多次创建转换,它们可以重复使用。但这在我的场景中是不可能的,因为每个转换都有不同的状态。
我这样做对吗and/or什么是实现我想要做的事情的最佳方式?
谢谢。
如果值是真正动态的,您将必须为每次调用创建一个新实例。这样做并不是世界末日,这只是一个小的分配。大多数转换器是完全无状态的,重复使用同一个实例是有意义的。
您也可以将这些对象合并在一起,但这会不必要地复杂化。您必须处理请求加入、取消以及它们使用方式的异步性质。除非成为问题,否则只需支付配置成本。
如果值的范围有限或者您反复使用相同的值,您可以将这些实例缓存在地图中。
我需要在转换中应用不同的边框粗细。也就是说,对于 GridView
.
我有一个 Transformation
,其中包含我在 transform
中使用 Canvas 绘图基元应用的厚度的局部变量。这一切正常,绘图正在进行中。
我的问题:因为每个转换都有不同的参数,这意味着我必须为每个单元格(在我的适配器中)创建一个新的转换,设置它的属性并将其传递给 Picasso 构建器。
我在别处读到,不应多次创建转换,它们可以重复使用。但这在我的场景中是不可能的,因为每个转换都有不同的状态。
我这样做对吗and/or什么是实现我想要做的事情的最佳方式?
谢谢。
如果值是真正动态的,您将必须为每次调用创建一个新实例。这样做并不是世界末日,这只是一个小的分配。大多数转换器是完全无状态的,重复使用同一个实例是有意义的。
您也可以将这些对象合并在一起,但这会不必要地复杂化。您必须处理请求加入、取消以及它们使用方式的异步性质。除非成为问题,否则只需支付配置成本。
如果值的范围有限或者您反复使用相同的值,您可以将这些实例缓存在地图中。