这是我的代码:
retrofit2.Call<User> call = MainActivity.apiInterface.performUserLogin (username,password);
Log.d(TAG,"retrofit");
call.enqueue (new Callback<User> () {
@Override
public void onResponse( retrofit2.Call<User> call, Response<User> response )
{
Log.d (TAG,"in");
if(response.body ().getResponse ().equals ("ok"))
{
Log.d (TAG,"ok");
MainActivity.prefConfig.writeLoginStatus (true);
loginFormActivityLisener.performLogin (response.body ().getName ());
}
else if(response.body ().getResponse ().equals ("failed"))
{
MainActivity.prefConfig.displayToast ("Login Failed... Please try again...");
Log.d(TAG,"failed");
}
}
@Override
public void onFailure( retrofit2.Call<User> call, Throwable t ) {
}
});
我有一个问题,为什么call.enqueue不起作用?就像没有在那里。它什么也没做。
答案 0 :(得分:0)
enqueue()函数异步工作。这是一个后台任务,在后台线程上运行请求。如果您调试代码,则很可能会看到调试器跳过入队调用并继续执行下一行。当后台线程完成时,可能会跳过几行,然后返回到call.enqueue()。
如果要使用前台任务,则可以选择execute()函数,或者有其他实现要等主线程等待回调响应,例如使用事件(请参见EventBus库)。