我有一个登录活动,其中有动画显示徽标图片,登录过程在动画运行期间在后台运行。我想等到动画和登录过程都完成后才能执行程序的下一部分
我的第一次尝试是将登录过程放在一个线程中,并在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();
}
........
}
答案 0 :(得分:1)
只需使用 AsyncTask 并执行以下操作:
@Override
protected void onPreExecute() {
title.startAnimation(set);
}
@Override
protected void onPostExecute(String result) {
title.clearAnimation();
}