Страницы

Поиск по вопросам

вторник, 13 ноября 2018 г.

Исключение NetworkOnMainThreadException

Возникла проблема: при обращении к http-серверу появляется исключение android.os.NetworkOnMainThreadException, сложность в том, что исключение происходит внутри класса, наследованного от AsyncTask.
Фрагмент кода:
public class NH { public static String URL_SERVER = "http://myserver.com/"; public static String DIR_IMAGES = "images/";
public void updateData() { List imgFiles = new ArrayList(); imgFiles.add("t001.png"); imgFiles.add("t002.png"); imgFiles.add("t003.png");
for (String img :imgFiles) { (new GetImages()).doInBackground(img); } }
class GetImages extends AsyncTask {
@Override private Void doInBackground(String... params) { String imgName = params[0];
try { URL url = new URL( URL_SERVER + DIR_IMAGES + imgName);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); httpURLConnection.setDoInput(true); httpURLConnection.setDoOutput(true); BufferedReader in = new BufferedReader( new InputStreamReader(httpURLConnection.getInputStream(),"UTF-8"));
in.close(); } catch (Exception e) { Log.e("log_tag", "Error in http connection " + e.toString()); } return null; } } }
Результат: 'log_tag: Error in http connection android.os.NetworkOnMainThreadException'
Среда разработки: Android Studio 1.5.1
Спасибо за помощь!


Ответ

AsyncTask нужно запускать методом execute(); , а вы запускаете всего лишьт его метод doInBackground

Комментариев нет:

Отправить комментарий