@thatmaniscool

Как устранить исключение android.os.NetworkOnMainThreadException?

При разработке приложения столкнулся с исключением android.os.NetworkOnMainThreadException, при этом на тестах все работает замечательно, данные скачиваются корректно.
Что я сделал:
1. Добавил разрешение в манифест
2. Протестировал код:
@Test
    public void checkCorrectURL() {
        int code = Utils.getCodeResponse("https://mail.ru");
        assertEquals(200, code);
    }


    @Test
    public void readJsonFromURL() {
        String json = Utils.readJsonFromURL("https://api.github.com/users");
        System.out.println(json);
    }

    @Test
    public void isJSONValid() {
        boolean isValid = Utils.isJSONValid(jsonString);
        boolean isNotValid = Utils.isJSONValid("this json string is not valid!");
        assertTrue(isValid);
        assertFalse(isNotValid);
    }

    @Test
    public void checkValidURLImage() {
        String correctLink = "https://avatars.githubusercontent.com/u/2?v=4";
        String incorrectLink = "https://avatars.githubusercntent.com/u/?v=4";
        int code1 = Utils.getCodeResponse(correctLink);
        int code2 = Utils.getCodeResponse(incorrectLink);
        assertEquals(200, code1);
        assertNotEquals(200, code2);
    }

    @Test
    public void createItemsList() {
        List<Data> users = Utils.createItemList(WhoIs.USER, "https://api.github.com/users");
        List<Data> teams = Utils.createItemList(WhoIs.TEAM, "https://api.github.com/organizations");

        assertNotNull(users);
        assertNotNull(teams);

        for (Data data : users)
            System.out.println(data.toString());

        for (Data data : teams)
            System.out.println(data.toString());
    }

Но при вызовет статичного метода для создания массива данных, сразу возникает исключение:
List <Data> items = Utils.createItemList(WhoIs.USER, "https://api.github.com/users");
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
AgentSmith
@AgentSmith
Это мой правильный ответ на твой вопрос
В Андроиде запрещено работать с сетью в главном UI-потоке, о чём и говорит ошибка.
Выноси работу с сетью в отдельный поток. Rx или корутины тебе в помощь
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы