2013-11-22 66 views
3

我有一個custom view這是動畫項目。動畫是一個簡單的阿爾法淡入淡出,無限重演。該視圖是cursor,它使cursor看起來像閃爍。當我開始爲項目編寫功能單元測試時,由於動畫的原因,我遇到了getActivity()方法掛在setUp方法中的問題。 getActivity()在返回之前調用waitForIdleSync(),並且由於動畫在開始時開始,所以getActivity()從不返回。這實際上花了我相當多的時間弄清楚,我會開始測試,它會坐在那裏無所事事......這也會發生在100%的時間。Android,無限重複動畫與instrumentation.waitForIdleSync()

我不會認爲這是一個BUG,因爲從技術上講,如果動畫運行,設備不是空閒的,但是這是一個問題。任何建議或解決方法,以允許動畫運行,從一開始,也使用期間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); 
} 
+0

我想我有同樣的問題,我在[這個問題]中描述(http://stackoverflow.com/questions/20860832/why-does-getactivity-block-during-junit-test-when-custom- imageview的通話開始)。你有沒有解決你的問題? –

回答

0

我有這個問題,報告說,它爲a bug on AOSP,但我不希望任何人將盡快修復它的任何時間。我的解決方法是刪除動畫(這是具有挑戰性的,因爲它是無限期的進度視圖)。你的情況的一個選擇是改變你的測試中的動畫時間,所以它不會動畫每一幀。不理想,但比我懷疑的凍結更好。