2 hyt941026 hyt941026 于 2016.02.17 22:18 提问

这两段代码为什么前者可执行,后者不行,若后者不放在run方法里是可执行的

前者:
// 创建子线程
new Thread() {
public void run() {
try {
// 获取源码路径
String path = et_enter.getText().toString().trim();
// 将路径转换为URL
URL url = new URL(path);
// 利用URL对象得到httpURLconnection对象 用于发送或接收数据
HttpURLConnection conn = (HttpURLConnection) url
.openConnection();
// 发送get请求,以得到网页源代码
conn.setRequestMethod("GET");// 必须大写
// 设置请求超时时间
conn.setConnectTimeout(5000);
// 获取服务器返回的状态码
int code = conn.getResponseCode();
// 判断是否请求成功
if (code == 200) {
InputStream in = conn.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int len = -1;
byte[] buffer = new byte[1024];
while ((len = in.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}
String content = new String(baos.toByteArray());

                    // 创建message对象用于存取content
                    Message msg = new Message();
                    msg.obj = content;

                    // 调用sendMessage方法发送消息
                    hander.sendMessage(msg);

                    // tv_display.setText(content);
                }

            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        };
    };

后者:
// 创建子线程
new Thread(){
public void run() {

            try {
                // 获取源码路径
                String path = et_enter.getText().toString().trim();
                // 将路径转换为URL
                URL url = new URL(path);
                // 利用URL对象得到httpURLconnection对象 用于发送或接收数据
                HttpURLConnection conn = (HttpURLConnection) url
                        .openConnection();
                // 发送get请求,以得到网页源代码
                conn.setRequestMethod("GET");// 必须大写
                // 设置请求超时时间
                conn.setConnectTimeout(5000);
                // 获取服务器返回的状态码
                int code = conn.getResponseCode();
                // 判断是否请求成功
                if (code == 200) {
                    InputStream in = conn.getInputStream();

                    //通过BitmapFactory获取bitmap
                    Bitmap bitmap = BitmapFactory.decodeStream(in);

                    // 创建message对象用于存取content
                    Message msg = Message.obtain();
                    msg.obj = bitmap;

                    // 调用sendMessage方法发送消息
                    hander.sendMessage(msg);

                }

            } catch (Exception e) {
                e.printStackTrace();
            }
        };
    };

3个回答

zhanghaoyangchao
zhanghaoyangchao   2016.02.18 09:19
已采纳

http://www.cnblogs.com/yourancao520/archive/2012/06/25/2561367.html这里有篇文章和你类似,可以看看,他的是将
Bitmap bitmap = BitmapFactory.decodeStream(in)改成了Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);

caozhy
caozhy   Ds   Rxr 2016.02.17 22:31

Bitmap bitmap = BitmapFactory.decodeStream(in);
这里有没有正确获得bmp对象,调试下。

hyt941026
hyt941026 有的,如果第二段代码不放在run方法里面是可以运行的
接近 2 年之前 回复
rui888
rui888   Ds   Rxr 2016.02.18 08:47

看不出来,调试的看看。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!