Android 从URL加载图像时出现网络错误
我正在从URL加载图像,将其转换为位图,然后将其添加到地图中的标记。我有两个标记,一个用于我的个人资料,另一个用于朋友的个人资料 当我加载图像时,我得到以下错误,并且图像没有被加载。也没有力量接近Android 从URL加载图像时出现网络错误,android,google-maps,google-maps-markers,google-maps-api-2,Android,Google Maps,Google Maps Markers,Google Maps Api 2,我正在从URL加载图像,将其转换为位图,然后将其添加到地图中的标记。我有两个标记,一个用于我的个人资料,另一个用于朋友的个人资料 当我加载图像时,我得到以下错误,并且图像没有被加载。也没有力量接近 android.os.NetworkOnMainThreadException 我不确定这是什么样的错误 下面是我正在尝试的代码:下面的代码同样适用于我的个人资料图片。只有在我尝试加载好友列表时才会出现此问题 我正在调用下面的内部for循环 for (int i = 0; i < frien
android.os.NetworkOnMainThreadException
我不确定这是什么样的错误
下面是我正在尝试的代码:下面的代码同样适用于我的个人资料图片。只有在我尝试加载好友列表时才会出现此问题
我正在调用下面的内部for循环
for (int i = 0; i < friendsList.size(); i++)
{
userName = friendsList.get(i).getName();
lati = friendsList.get(i).getLati();
longi = friendsList.get(i).getLongi();
photoUrl = friendsList.get(i).getImage();
loadMyFriendsLocation(Double.parseDouble(lati), Double.parseDouble(longi), userName, photoUrl, 15);
}
我在这里完全是空白,我不知道这可能会出错,因为我的个人资料图片有相同的代码出现,但朋友的图片没有出现
有人能帮我解决这个问题吗
谢谢 当应用程序试图在其主线程上执行网络操作时,会引发此异常。因此,我们必须使用以下方法:- 线
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
try {
//Your code goes here
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
异步任务
private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
//your code goes here
return response;
}
@Override
protected void onPostExecute(String result) {
textView.setText(result);
}
如果您从web或数据库获取图像,则可以通过这种方式获取图像
从网络
在线程中下载图像或使用AsyncTask…在我的情况下,我不能使用AsyncTask,在哪里将视图转换为位图?您可以使用AsyncTask@CapDroid:在哪个部分将视图转换为位图?@驾驶员将视图转换为位图不是导致此错误的原因,此错误是因为您在主线程上调用网络操作,所以在主线程中调用网络操作。
private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
//your code goes here
return response;
}
@Override
protected void onPostExecute(String result) {
textView.setText(result);
}
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
try {
Bitmap bitmap=null;
URL imageUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection)imageUrl.openConnection();
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
conn.setInstanceFollowRedirects(true);
InputStream is=conn.getInputStream();
OutputStream os = new FileOutputStream(f);
Utils.CopyStream(is, os);
os.close();
bitmap = decodeFile(f);
return bitmap;
} catch (Exception ex){
ex.printStackTrace();
return null;
}
}