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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
《明解C语言》示例代码和练习代码[第2章]
《明解C语言》,作者:柴田望洋。书中第2章的示例代码和练习代码。
java.sql.Date类和java.util.Date类的使用
package com.ly; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class TestMain {
strcpy函数用法
原型:extern char *strcpy(char *dest,char *src);           用法:#include     功能:把src所指由NULL结束的字符串复制到dest所指的数组中。     说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。         返回指向dest的指针。     举例:
java中的简单的字符串大小比较方法——compareto方法的详细介绍
原文链接:在java编程中,我们会偶尔遇到字符串大小比较的问题,compareTo()方法很简单就实现这种功能。该方法用于判断一个字符串是大于、等于还是小于另一个字符串。判断字符串大小的依据是根据它们在字典中的顺序决定的。    语法:Str1.compareTo(Str2);    其返回的是一个int类型值。若Str1等于参数字符串Str2字符串,则返回0;若该Str1按字典顺序小于参数字符串...
【选择题】Java基础测试二(15道)
【选择题】Java基础测试二(15道) 11.对于构造方法,下列叙述正确的是:(AC) A. 构造方法的方法名必须与类名相同; B. 构造方法必须用void申明返回类型 (没有返回类型) C. 构造方法可以被程序调用 D. 若编程人员没再类中定义构造方法,程序将报错。 12.为了区分类中重载的同名的不同的方法,要求:(A) A. 采用不同的形式
《明解C语言》笔记及课后习题答案 【第二章】
练习2-1/*---显示前者是后者的百分之几---*/ #include <stdio.h> int main(void) { int a,b; puts("请输入两个整数。"); printf("整数x:"); scanf("%d",&a); printf("整数y:"); scanf("%d",&b); printf
MySQL实验(三) 过程式数据库对象的使用
一、目的与要求(1)掌握存储过程创建和调用的方法; (2)掌握MySQL中程序片段的组成; (3)掌握游标的使用方法; (4)掌握存储函数创建和调用的方法; (5)掌握触发器的使用方法; (6)掌握事件的创建和使用方法;二、实验内容(1)了解存储过程体中允许的SQL语句类型和参数的定义方法; (2)了解存储过程的调用方法; (3)了解存储函数的定义和调用方法; (4)了解触发器的作用
laydate时间常用
laydate(options); options是一个对象,它包含了以下key: '默认值' elem: '#id', //需显示日期的元素选择器 event: 'click', //触发事件 format: 'YYYY-MM-DD hh:mm:ss', //日期格式 istime: false, //是否开启时间选择 ...
面试题22:根据栈的压入序列,判断弹出序列是否合法
根据栈的压入序列,判断弹出序列是否合法
一个正执行的程序如何启动另一新程序并关闭现执行程序
一个正执行的程序如何启动另一新程序并关闭现执行程序