gpt4 book ai didi

AsyncTask 的 doInBackground 中的 android.os.NetworkOnMainThreadException

转载 作者:行者123 更新时间:2023-12-01 17:26:23 24 4
gpt4 key购买 nike

为什么我会进入 AsyncTask,而该 AsyncTask 应该出现 android.os.NetworkOnMainThreadException?我认为 AsyncTask 可以解决这个问题。异常(exception)在第 7 行。

private class ImageDownloadTask extends AsyncTask<String, Integer, byte[]> {
@Override
protected byte[] doInBackground(String... params) {
try {
URL url = new URL(params[0]);
URLConnection connection = url.openConnection();
InputStream inputStream = connection.getInputStream();
ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];

int len;
while ((len = inputStream.read(buffer)) != -1) {
byteBuffer.write(buffer, 0, len);
}
return byteBuffer.toByteArray();
} catch (IOException ex) {
return new byte[0];
}
}
}

我想用它来下载图片。

public byte[] getProfilePicture(Context context, String id) {
String url = context.getString(R.string.facebook_picture_url_large, id);
ImageDownloadTask task = new ImageDownloadTask();
return task.doInBackground(url);
}

最佳答案

通过直接调用doInBackground(),您实际上并没有使用AsyncTask 功能。相反,您应该调用 execute()然后通过覆盖 AsyncTask 的 onPostExecute() 来使用结果方法如同一页面的“用法”部分中所述。

关于AsyncTask 的 doInBackground 中的 android.os.NetworkOnMainThreadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61204542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com