多次从AsyncTask调用setImageResource

时间:2015-04-04 14:10:33

标签: android android-asynctask imageview

大家好日子。

我正在使用 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。

我缺少什么?

提前致谢。

1 个答案:

答案 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结果。