我试图从互联网上检索图像并找到类似的样本,然后稍微更改了我找到的代码。但是当我运行我的代码时,我得到了这个异常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;
}
答案 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:
异步任务使用的三种类型如下: