从 url 在 ImageView 中加载图像
Loading images in ImageView from a url
我在互联网上找到了这个片段:
try{
URL url = new URL(imgUrl+imageId[position]+".png");
HttpURLConnection con = (HttpURLConnection)url.openConnection();
InputStream is = con.getInputStream();
Bitmap bmp = BitmapFactory.decodeStream(is);
imageView.setImageBitmap(bmp);
}catch(Exception e) {
System.out.println(e.getMessage());
}
代码没有给我任何错误,我得到了我想要的 url。但是 ImageView 保持为空。 运行 我没问题的调试器:InputStream is = con.getInputStream();
在此之后,调试器进入 catch 块,调试器 window 显示
NetworkOnMainThreadException
我知道这是因为我正在 UI 线程上进行网络操作,但是我的 activity 已经在扩展另一个 class,所以我无法扩展 AsycnTask。有什么解决方法吗?
加:如果出现异常,应用程序不应该崩溃吗?我的应用程序运行良好,但 imageview 没有显示任何内容。
Android 的较新版本要求您在单独的线程上发出 HTTP 请求(网络)。您可以创建一个单独的线程,或为此使用 AsyncTask。执行此操作后,相同的代码应该可以工作。
您可以使用 Picasso,它在异步线程中也能为您提供帮助:
Picasso.with(context).load(imgUrl+imageId[position]+".png").into(imageView);
您可以在此处下载源代码:http://square.github.io/picasso/
或者直接从 Android Studio
添加它作为依赖项
我在互联网上找到了这个片段:
try{
URL url = new URL(imgUrl+imageId[position]+".png");
HttpURLConnection con = (HttpURLConnection)url.openConnection();
InputStream is = con.getInputStream();
Bitmap bmp = BitmapFactory.decodeStream(is);
imageView.setImageBitmap(bmp);
}catch(Exception e) {
System.out.println(e.getMessage());
}
代码没有给我任何错误,我得到了我想要的 url。但是 ImageView 保持为空。 运行 我没问题的调试器:InputStream is = con.getInputStream();
在此之后,调试器进入 catch 块,调试器 window 显示
NetworkOnMainThreadException
我知道这是因为我正在 UI 线程上进行网络操作,但是我的 activity 已经在扩展另一个 class,所以我无法扩展 AsycnTask。有什么解决方法吗?
加:如果出现异常,应用程序不应该崩溃吗?我的应用程序运行良好,但 imageview 没有显示任何内容。
Android 的较新版本要求您在单独的线程上发出 HTTP 请求(网络)。您可以创建一个单独的线程,或为此使用 AsyncTask。执行此操作后,相同的代码应该可以工作。
您可以使用 Picasso,它在异步线程中也能为您提供帮助:
Picasso.with(context).load(imgUrl+imageId[position]+".png").into(imageView);
您可以在此处下载源代码:http://square.github.io/picasso/ 或者直接从 Android Studio
添加它作为依赖项