我有一个项目custom view
这是动画的。动画是一个简单的 Alpha 淡入淡出,无限重复。该视图是一个cursor
,这使得cursor
看起来它在眨眼。当我开始为项目编写功能单元测试时,我遇到了一个问题:getActivity()
方法会挂在setUp
由于动画的方法。getActivity()
calls waitForIdleSync()
在返回之前,并且由于动画从一开始就开始,getActivity()
永远不会回来。这实际上花了我相当多的时间来弄清楚,我会开始测试,但它会坐在那里什么都不做......这也100%的时间会发生。
我不认为这是一个 BUG,因为从技术上讲,如果动画正在运行,设备不会空闲,但这是一个问题。任何允许动画从头开始运行的建议或解决方法,但也可以使用waitForIdleSync
during ActivityInstrumentationTestCase2s
将不胜感激。我可以实施一个解决方法来不使用waitForIdleSync()
通过等待其他事件来提供与测试操作和应用程序操作的同步,但是我仍然必须调用getActivity()
在某一点。一旦进入此方法,它就永远不会以无限重复的动画返回。此外,动画必须在结束之前的某个时间开始onRestart
方法。理想情况下,会有一个waitForIdle(int timeout)
方法。
我在错误的时间开始动画,或者我没有使用正确的方法开始动画?我以编程方式启动/停止动画,因为需要在应用程序中启动和停止闪烁行为。下面是我用来启动动画的代码。这startBlinking(Context)
方法是从内部调用的cursors
构造函数...
public void startBlinking(Context context){
Animation blink = AnimationUtils.loadAnimation(context, R.anim.cursor_blink);
blink.setRepeatMode(Animation.RESTART);
blink.setRepeatCount(Animation.INFINITE);
startAnimation(blink);
}
我遇到了这个问题并将其报告为AOSP 上的一个错误,但我不认为有人会很快修复它。我的解决方法是删除动画(这很有挑战性,因为它是无限期的进度视图)。对于您的情况,一个选择是更改测试中的动画计时,这样它就不会为每一帧设置动画。不太理想,但我怀疑比冻结要好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)