【问题标题】:trying to call retrofit execute in a method | NetworkOnMainThreadException试图在方法中调用改造执行 | NetworkOnMainThreadException
【发布时间】:2020-07-09 03:20:53
【问题描述】:

我正在尝试在方法中调用登录接口。

我正在使用android studio登录模板进行登录。

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
    }
}

【问题讨论】:

    标签: android retrofit viewmodel


    【解决方案1】:

    那是因为你是从主线程(UI线程)调用这个方法,主线程不是为了繁重的处理和网络调用,如果你想调用一个API,那么从后台线程调用它。

    execute() 方法运行在主线程需要异步任务把它放到后台线程或者你可以使用enqueue() 方法,enqueue 将从后台线程调用 API。

    【讨论】:

    • 使用日志拦截器或任何其他方式来打印响应,检查你得到了什么,然后告诉我
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    相关资源
    最近更新 更多