多次从 AsyncTask 调用 setImageResource
Calling setImageResource from AsyncTask multiple times
大家好。
我正在使用 AsyncTasks 并从 doInBackground()
方法调用 publishProgress();
。我很确定这里没有错误。
我需要更改 ImageView 的源,例如每 3 秒从 onProgressUpdate()
方法。
如果我只这样做;
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 等待 6 秒,然后 转到 image3,不显示 image2。
我错过了什么?
提前致谢。
我认为您需要一个 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
结果。
大家好。
我正在使用 AsyncTasks 并从 doInBackground()
方法调用 publishProgress();
。我很确定这里没有错误。
我需要更改 ImageView 的源,例如每 3 秒从 onProgressUpdate()
方法。
如果我只这样做;
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 等待 6 秒,然后 转到 image3,不显示 image2。
我错过了什么?
提前致谢。
我认为您需要一个 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
结果。