私はアンドロイドでログインアクティビティを書き込みました。私は私のコードはここにこれに、このような非同期タスクをしたい非同期タスクはOnResponse関数を省略します
public class UserLoginTask extends AsyncTask<Void, Void, Boolean> {
boolean succes;
private final String mEmail;
private final String mPassword;
UserLoginTask(String email, String password) {
mEmail = email;
mPassword = password;
}
@Override
protected Boolean doInBackground(Void... params) {
Retrofit retrofit = LoginService.buildRetrofit();
LoginApiInterface apiService = retrofit.create(LoginApiInterface.class);
Call<LoginPojo> login = apiService.login(mEmail, mPassword);
login.enqueue(new Callback<LoginPojo>() {
@Override
public void onResponse(Call<LoginPojo> call, Response<LoginPojo> response) {
int c = response.raw().code();
if (c == 200) {
succes = true;
token = response.body().getAuthorization();
} else {
succes = false;
mPasswordView.setError(getString(R.string.error_incorrect_password));
}
}
@Override
public void onFailure(Call<LoginPojo> call, Throwable t) {
succes = false;
mPasswordView.setError(getString(R.string.error_incorrect_password));
}
});
return succes;
}
すべてが正常に見えるが、それは唯一、それは常に返すの呼びかけまでのコードを実行します
「yeaah私は私の方法は、サーバから別のコードを返す知っているが、問題はそのコードでは、それはだだけcallメソッドまで実行されますOnResponse関数が実行されることはありません "、どのように実際にこれを見つけましたか? –
私はこのコードをデバッグしています – neir45
その後、 'login.enqueue'がないところでコールバックの中にブレークポイントを追加します。このようにして、コールバックが呼び出されたときにデバッグできるはずです。 –