从网址

时间:2015-07-03 11:46:13

标签: android imageview

我在互联网上找到了这个片段:

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());
    }

代码没有给我任何错误,我得到了我想要的确切网址。但ImageView保持空白。运行调试器我没有遇到任何问题:InputStream is = con.getInputStream(); 在此之后,调试器进入catch块,调试器窗口显示

NetworkOnMainThreadException

我知道这是因为我在UI线程上进行网络操作,但我的活动已经扩展了另一个类,所以我无法扩展AsycnTask。对此有何解决方法?

另外:如果有异常,应该不应该崩溃?我的应用程序运行正常,但imageview没有显示任何内容。

2 个答案:

答案 0 :(得分:1)

较新版本的Android要求您在单独的线程上发出HTTP请求(网络)。您可以创建单独的Thread,或者使用AsyncTask。执行此操作后,相同的代码应该可以正常工作。

答案 1 :(得分:1)

你可以使用Picasso来帮助你进入异步线程:

html2canvas( $('.class_of_element'), {...}...

您可以在此处下载资源:http://square.github.io/picasso/ 或者直接从Android Studio

添加它作为依赖项