使用View.setTag作为记录图像哈希值的方法是否安全?

时间:2018-08-15 02:46:17

标签: android picasso android-lifecycle android-glide

我计划使用View.setTag(int, Object)存储Uri对象的哈希码,然后再通过AppCompatImageViewPicasso将其加载到Glide中。

我想知道,在android生命周期中,AppCompatImageView是否会被销毁并重新创建-保留来自setTag的信息,而不保留实际图像本身的信息-从而造成不一致。

我是否保证只要存在setTag,加载的图像也将存在?

1 个答案:

答案 0 :(得分:1)

  

我计划使用View.setTag(int, Object)来存储   通过AppCompatImageView将Uri对象加载到Picasso或   Glide

在进行ListView优化时,我们使用View.setTag(int, Object)存储该特定视图的信息,只要重新绘制该视图即可重用,请记住不要重新创建单词redraw。因此,我们可以说直到视图的对象被保留或换句话说,视图不被破坏才是安全的。

  

我想知道,在android生命周期中,是否会有   AppCompatImageView被销毁并重新创建的时间-   保留来自setTag的信息,但不保留实际图像本身   -从而造成不一致。

最好不要发生这种情况。考虑到设备旋转的情况,将创建并绘制一个新的视图,因此它将不保存最后设置的标签的信息。

  

我保证只要setTag存在,加载的图像就会   还存在吗?

让我们这样说,imageView.setTag(int, Object)将一直存在,直到您的ImageView存在为止,因此从ImageView到Tag的合成不是相反,从简单的Java术语来说,tag只是View类的类级别属性,即ImageView或AppCompatImageView扩展到层次结构中的某个位置。因此,如果存在ImageView,同一个ImageView对象,那么您的同一个标签就会存在。