检索图像时对Asyntask的困惑

时间:2014-03-27 14:15:38

标签: android android-asynctask

我试图从互联网上检索图像并找到类似的样本,然后稍微更改了我找到的代码。但是当我运行我的代码时,我得到了这个异常android.os.NetworkOnMainThreadException。然后我搜索了解决方案并注意到我应该使用Asyntask类来执行此操作。问题很简单我无法在每行代码中遇到语法错误。请您帮忙解决如何修复此代码并使其正常运行。谢谢预先

class BackroundActivity extends AsyncTask<Void, Bitmap, Void>
{

    @Override
    protected Bitmap doInBackground(String src) throws IOException {
        HttpURLConnection con = null;

            URL url=new URL(src);
            con=(HttpURLConnection) url.openConnection();
            con.setDoInput(true);
            InputStream input=con.getInputStream();
            Bitmap bmp=BitmapFactory.decodeStream(input);
            return bmp;

    }

1 个答案:

答案 0 :(得分:0)

AsyncTask正在使用varargs,而且您没有正确指定返回类型,因此正确的代码如下:

class BackroundActivity extends AsyncTask<String, Void, Bitmap>
{

    @Override
    protected Bitmap doInBackground(String... src) throws IOException {
        HttpURLConnection con = null;

        URL url=new URL(src[0]);
        con=(HttpURLConnection) url.openConnection();
        InputStream input=con.getInputStream();
        Bitmap bmp = BitmapFactory.decodeStream(input);
        return bmp;

    }
}

来自docs

异步任务使用的三种类型如下:

  1. Params,执行时发送给任务的参数类型。
  2. 进度,后台计算期间发布的进度单位的类型。
  3. 结果,背景计算结果的类型。