大家好日子。
我正在使用 AsyncTasks 并从publishProgress();
方法调用doInBackground()
。我很确定在此之前没有错误。
我需要更改ImageView的来源,例如在onProgressUpdate()
方法的每3秒内。
如果我只这样做;
agiz.setImageResource(R.drawable.image1);
初始图像成功更改为image1。
但如果我尝试这样做(实际上是我的目标)
imageView.setImageResource(R.drawable.image1);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
}
imageView.setImageResource(R.drawable.image2);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
}
imageView.setImageResource(R.drawable.image3);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
}
imageView WAITS 6 SECONDS,然后转到image3,而不显示image2。
我缺少什么?
提前致谢。
答案 0 :(得分:1)
我认为你需要postDelayed方法。它将更具可读性和有效性,因为此方法适用于UI线程。
imageView.postDelayed(new Runnable(){
@Override
public void run() {
imageView.setImageResource(R.drawable.image1);
}}
,3000);
imageView.postDelayed(new Runnable(){
@Override
public void run() {
imageView.setImageResource(R.drawable.image2);
}}
,6000);
imageView.postDelayed(new Runnable(){
@Override
public void run() {
imageView.setImageResource(R.drawable.image3);
}}
,9000);
解决您的问题。
我想你阻止了UI线程。 Thread.sleep()
方法立即阻止当前线程,而不会在重新绘制imageView时等待,因此您获得lock
结果。