从 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

添加它作为依赖项