2013-07-17 110 views
0

我有一個登錄活動,其中有一個動畫顯示標誌圖片,登錄過程在運行動畫時在後臺運行。我想等到動畫和登錄過程完成後才能執行程序的下一部分。
我的第一次嘗試是把登錄過程放在一個線程中,並在onAnimationEnd使用thread.join()來阻塞,直到線程結束。
它似乎是一個很好的解決方案,但是因爲我使用thread.join(),主UI線程被阻塞,因此可能會發生ANR。我試過使用AsyncTask,但它不能處理onAnimationEnd事件。有沒有其他解決問題的方法?
阻塞,直到任務完成onAnimationEnd

的代碼是這樣的:

protected void onCreate(Bundle savedInstanceState) { 
    ........ 
    title.startAnimation(set); 
    loginProcess.start(); 
    ........ 
} 

public void onAnimationEnd(Animation animation) { 
    try { 
     loginProcess.join(); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
    ........ 
} 
+0

你爲什麼不只是完成加載動畫時登錄過程完成 –

+0

@FrancisFuerte我不想中斷動畫,需要將它完全顯示出來 –

+0

爲什麼需要再次加入這些線程? –

回答

1

只需使用一個的AsyncTask,做一些事情,如:

@Override 
protected void onPreExecute() { 
     title.startAnimation(set); 
} 

@Override 
protected void onPostExecute(String result) { 
     title.clearAnimation(); 
} 
+0

這是一個很好的建議,但動畫將強制結束。我需要完成動畫。 –

相關問題