nuaaccc 2017-02-26 13:39 采纳率: 0%
浏览 868
已结题

Android中同一个Handler下载2幅图片,却只能显示1张图片。

package cn.edu.siso.async;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.ImageView;
import android.widget.Toast;

public class ThreadDownloadImageActivity extends Activity {
/** Called when the activity is first created. */
private AsyncLoadHandler asynHandler;
private int id1;
private ImageView img2;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.threaddownload);

    id1 = R.id.ivThread1;
    img2 = (ImageView) findViewById(R.id.ivThread2);

    // 定义后台下载线程
    AsyncLoadPicThread1 asyncLoadPicThread1 = new AsyncLoadPicThread1();
    asynHandler = new AsyncLoadHandler();
    // 启动后台下载线程
    asyncLoadPicThread1.start();

    // 定义后台下载线程
    AsyncLoadPicThread2 asyncLoadPicThread2 = new AsyncLoadPicThread2();

    // 启动后台下载线程
    asyncLoadPicThread2.start();
}

// 下载图片线程1
public class AsyncLoadPicThread1 extends Thread {
    private String url = "http://img.52fuqing.com/upload/editor/2017-2-24/2017224111925866e5cze.png";

    @Override
    public void run() {
        try {
            Drawable drawable = Drawable.createFromStream(
                    new URL(url).openStream(), "01.jpg");
            Message message = asynHandler.obtainMessage();
            message.arg1 = id1;
            message.obj = drawable;
            message.what = 1;
            asynHandler.sendMessage(message);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

// 下载图片线程2
public class AsyncLoadPicThread2 extends Thread {
    private String url = "http://img1.gtimg.com/19/1905/190582/19058261_1200x1000_281.jpg";

    @Override
    public void run() {
        try {
            Drawable drawable = Drawable.createFromStream(
                    new URL(url).openStream(), "02.jpg");
            Message message2 = asynHandler.obtainMessage();
            // message.arg1 = id1;
            message2.obj = drawable;
            message2.what =2;
            asynHandler.sendMessage(message2);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

// 图片下载完成通知主线程显示图片
public class AsyncLoadHandler extends Handler {
    @Override
    public void handleMessage(Message msg) {

        if (msg.what == 1) {

            ((ImageView) ThreadDownloadImageActivity.this
                    .findViewById(msg.arg1))
                    .setImageDrawable((Drawable) msg.obj);
        }
        if (msg.what == 2) {
            img2.setImageDrawable((Drawable) msg.obj);
        }

    }
}

// 捕获back按钮,关闭activity
public boolean onKeyDown(int keyCode, KeyEvent event) {

    if (keyCode == KeyEvent.KEYCODE_BACK) {
        finish();
    }
    return false;
}

}

  • 写回答

1条回答 默认 最新

  • 纯洁小码农_z 2017-02-27 07:50
    关注

    楼主,我试了一下你的代码,没问题啊?我拷贝上面的代码,自己写了个布局,运行正常,你仔细检查一下,会不会是你上面的id1的id导错了,如果还没解决,可以发邮箱给我,1668126018@qq.com

    评论

报告相同问题?

悬赏问题

  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?