澳洲幸运8 ImageView加载网络图片

日期:2021-01-19 09:11:09 浏览量: 126

加载网络图片程序时出错:NetworkOnMainThreadException

android 加载网络图片_加载网络图片_image加载网络图片

在android3.0之后加载网络图片,将耗时的操作放在子线程中BB雷电pk ,否则可能导致主线程阻塞和ANR(应用程序无响应:应用程序无响应)百家乐APP加载网络图片需要访问网络幸运快三 ,访问网络的操作都是耗时的操作。

android 加载网络图片_加载网络图片_image加载网络图片

加载网络图片凤凰彩票主页 ,我们可以首先创建一个getHttpBitmap方法来访问网络,获取数据流,然后通过分析获取图片。具体代码如下

加载网络图片_android 加载网络图片_image加载网络图片

public static Bitmap getHttpBitmap(String address) {
URL myFileURL;
Bitmap bitmap=null;
try{
myFileURL = new URL(address);
//获得连接
HttpURLConnection conn=(HttpURLConnection)myFileURL.openConnection();
//设置超时时间为6000毫秒,conn.setConnectionTiem(0);表示没有时间限制
conn.setConnectTimeout(6000);
//连接设置获得数据流
conn.setDoInput(true);
//不使用缓存
conn.setUseCaches(false);
//这句可有可无,没有影响
conn.connect();
//得到数据流
InputStream is = conn.getInputStream();
Log.d("ss", "--获取到的图片数据流:---------" + is);
//解析得到图片
bitmap = BitmapFactory.decodeStream(is);
//关闭数据流
is.close();
}catch(Exception e){
Log.d("ss", "------------------天气图片获取失败");
}
return bitmap;
}

然后再次调用它。由于访问网络是一项耗时的操作加载网络图片凤凰彩票平台 ,因此必须打开子线程才能调用此方法

加载网络图片_image加载网络图片_android 加载网络图片

//新建子线程,加载图片
new Thread(new Runnable() {
@Override
public void run() {
String url = "http://api.map.baidu.com/images/weather/night/duoyun.png";
final Bitmap bitmap = getHttpBitmap(url);
//view的post方法是运行在主线程中的,因为所有view都自带一个handler,所有handler都有post方法,子线程无法刷新UI
 imageView.post(new Runnable() {
@Override
 public void run() {
imageView.setImageBitmap(bitmap);
}
});
}
}).start();