Android,无限重复动画vs.instrumentation.waitForIdleSync()
我有一个带有Android,无限重复动画vs.instrumentation.waitForIdleSync(),android,animation,Android,Animation,我有一个带有自定义视图的项目,该视图是动画的。动画是一个简单的alpha淡入淡出,它会无限重复自身。视图是一个光标,它使光标看起来像是在闪烁。当我开始为项目编写功能单元测试时,我遇到了一个问题,getActivity()方法由于动画而挂起在setUp方法中。 getActivity()在返回之前调用waitForIdleSync(),由于动画是在开始时启动的,getActivity()永远不会返回。这实际上花了我相当多的时间来弄清楚,我会开始测试,它会坐在那里什么也不做。。。这种情况也会100%
自定义视图的项目,该视图是动画的。动画是一个简单的alpha淡入淡出,它会无限重复自身。视图是一个光标
,它使光标
看起来像是在闪烁。当我开始为项目编写功能单元测试时,我遇到了一个问题,getActivity()
方法由于动画而挂起在setUp
方法中。
getActivity()
在返回之前调用waitForIdleSync()
,由于动画是在开始时启动的,getActivity()
永远不会返回。这实际上花了我相当多的时间来弄清楚,我会开始测试,它会坐在那里什么也不做。。。这种情况也会100%发生
<>我不认为这是一个bug,因为技术上,如果动画运行,设备不是闲置的,但是这是一个问题。如果您有任何建议或解决方法,允许动画从一开始就运行,但在ActivityInstrumentationTestCase2s
期间也使用waitForIdleSync
,我们将不胜感激。通过等待其他事件提供与测试操作和应用程序操作的同步,我可以实现一种不使用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);
}
我有这个问题,并报告为,但我不希望有人会很快修复它。我的解决办法是删除动画(这很有挑战性,因为它是无限进度视图)。对于您的情况,一个选项是在测试中更改动画计时,这样它就不会为每一帧设置动画。不太理想,但比我猜想的冷冻要好。我想我也有同样的问题,我在中描述过。你解决过你的问题吗?