我有一个带
自定义视图
的项目,其中包含动画。动画是简单的alpha淡入淡出,会无限重复。这个视图是一个光标
,使得光标
看起来像是在闪烁。当我开始为项目编写功能单元测试时,我遇到了setUp
方法中getActivity()
方法挂起的问题,原因是由于动画。getActivity()
在返回之前调用waitForIdleSync()
,并且由于动画在开头启动,getActivity()
永远不会返回。这实际上花费了我相当长的时间去解决,我会开始测试,但却什么都没做......这也会100%发生。
我认为这不是一个BUG,因为从技术上讲,如果动画正在运行,则设备不空闲,但这是一个ISSUE。任何建议或解决方法,既可以让动画从一开始就运行,又可以在ActivityInstrumentationTestCase2s
期间使用waitForIdleSync
,将不胜感激。我可以实现一个解决方案,通过等待其他事件来提供测试操作和应用程序操作的同步,而不使用waitForIdleSync()
,但是我仍然必须在某个时候调用getActivity()
。一旦进入这个方法,具有无限重复动画的方法就永远不会返回。此外,动画必须在onRestart
方法结束前的某个时刻开始。理想情况下,应该有一个waitForIdle(int timeout)
方法。
我是否在错误的时间启动了动画,或者我是否没有使用正确的方法来启动动画?我通过编程方式启动/停止动画,因为需要在应用程序中启动和停止闪烁行为。下面是我用于启动动画的代码。从cursors
构造函数中调用startBlinking(Context)
方法......
public void startBlinking(Context context){
Animation blink = AnimationUtils.loadAnimation(context, R.anim.cursor_blink);
blink.setRepeatMode(Animation.RESTART);
blink.setRepeatCount(Animation.INFINITE);
startAnimation(blink);
}