пытается вызвать выполнение модификации в методе | NetworkOnMainThreadException - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь вызвать интерфейс входа в систему в методе.

Я использую шаблон входа в студию android для входа в систему.

public class LoginDataSource {

    public Result<LoggedInUser> login(String username, String password) {

        try {
            Response<LoggedInUser> response = API.getLoginService().login(username, password).execute();

                return new Result.Success<>(response.body());
        } catch (Exception e) {
            return new Result.Error(new IOException("Error logging in", e));
        }
    }

    public void logout() {
        // TODO: revoke authentication
    }
}

1 Ответ

0 голосов
/ 09 июля 2020

Это потому, что вы вызываете этот метод из основного потока (потока пользовательского интерфейса), основной поток не предназначен для тяжелой обработки и сетевых вызовов, если вы хотите вызвать API, затем вызовите его из фонового потока.

execute() метод запускается в основном потоке, требуется асинхронная c задача, чтобы поместить это в фоновый поток, или вы можете использовать метод enqueue(), enqueue вызовет API из фонового потока.

...