阻止任务完成onAnimationEnd

时间:2013-07-17 03:49:39

标签: android multithreading animation

我有一个登录活动,其中有动画显示徽标图片,登录过程在动画运行期间在后台运行。我想等到动画和登录过程都完成后才能执行程序的下一部分 我的第一次尝试是将登录过程放在一个线程中,并在onAnimationEnd中使用thread.join()来阻止,直到线程结束。
这似乎是一个很好的解决方案,但是由于我使用thread.join(),主UI线程被阻止,因此ANR可能会发生。我尝试使用AsyncTask,但它无法处理onAnimationEnd事件。有没有其他方法可以解决这个问题?

代码如下:

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

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

1 个答案:

答案 0 :(得分:1)

只需使用 AsyncTask 并执行以下操作:

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

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