网络图片读取错误。求大神解答
废话不说直接上源码
public class MainActivity extends Activity {
private Handler mHandler;
Bitmap bmImg;
ImageView imView;
String imageUrl = "http://hiphotos.baidu.com/baidu/pic/item/7d8aebfebf3f9e125c6008d8.jpg";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(){
@Override
public void run() {
// TODO Auto-generated method stub
a.sendEmptyMessage(0x111);
}
}.start();
}
Handler a = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
if (msg.what == 0x111) {
imView = (ImageView) findViewById(R.id.imview);
imView.setImageBitmap(returnBitMap(imageUrl));
}
}
};
public Bitmap returnBitMap(String url) {
URL myFileUrl = null;
Bitmap bitmap = null;
try {
myFileUrl = new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
HttpURLConnection conn = (HttpURLConnection) myFileUrl
.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(is);
is.close();
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
}
android 网络图片读取 异常
[解决办法]
加一句
conn.disconnect();
[解决办法]
new Thread(){
@Override
public void run() {
a.sendEmptyMessage(0x111); //这个地方去掉
returnBitMap(imageUrl);获取网络图片应把代码放到这里,网络东西需要放到线程里面。
}
}.start();
returnBitMap方法里面如果获取到了Bitmap就发送消息显示图片
里面加上
Message msg = Message();
msg.what = 0x111;
msg.obj = bitmap;//获取到的图片
a.sendEmptyMessage(msg );
Handler a = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
if (msg.what == 0x111) {
imView = (ImageView) findViewById(R.id.imview);
imView.setImageBitmap((Bitmap)msg.obj);
}
}
};
[解决办法]
你的代码没有错,就是不能用主线程来进行网络操作