View.hasTransientState()的目的是什么?

6
具体来说,是setHasTransientState(boolean)方法。怎么使用它?为什么要使用它?我正在寻找一个“现实生活”场景。
文档的定义如下:
设置此视图当前是否正在跟踪短暂状态,当可能时,框架应尽可能保留该状态。此标志是引用计数的,因此每次调用setHasTransientState(true)都应与稍后调用setHasTransientState(false)配对。 有短暂状态的视图不能轻松地从外部数据源(例如,在列表中绑定项目视图的适配器)重新绑定。这可能是因为视图正在执行动画,跟踪用户选择的内容或类似情况。
1个回答

1
如果视图是ListView项,则setHasTransientState可以防止其被回收。如果它处于动画中,则很有用。短暂只是视图的一种特殊状态,我认为它意味着不要碰我(作为回收),我很快就会变得不稳定。

谢谢。但是,每当您在列表中动画显示视图时,您不需要手动设置setHasTransientState(我假设这已经为您完成)。我想知道作为开发人员,您什么时候需要手动设置此状态。 - Alex.F
2
你可以查看ViewPropertyAnimator的代码,你会发现在startAnimation中有"mView.setHasTransientState(true);",而在onAnimationEnd中有"mView.setHasTransientState(false);"。 - chefish
1
如果您使用ObjectAnimator或任何其他类型的自定义动画,应该使用它。在这种情况下,视图可以在动画尚未完成时被重用。为了防止这种情况发生,您应该在动画开始时将“setHasTransientState”设置为“true”,并在动画完成时将其设置为“false”。 - Grimmy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接