0

我有一个登录活动,其中有一个显示徽标图片的动画,并且在动画运行期间登录过程在后台运行。我想等到动画和登录过程都完成后才能执行程序的下一部分。
我的第一次尝试是将登录过程放在一个线程中,并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();
    }
    ........
}
4

1 回答 1

1

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

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

@Override
protected void onPostExecute(String result) {
       title.clearAnimation();
}
于 2013-07-17T05:02:32.150 回答