私は初心者ですが、http呼び出しでRetrofit 2.0を使用しています。異なるアクティビティで同じ呼び出しを使用するので、私は非アクティビティクラスで関数を作成しました。ノンアクティビティクラスでの改修コール
ここで受信する前に、非アクティビティクラスのコードで私の改造呼び出し、
public class ServerRequests {
private static ServerRequests serverRequests = new ServerRequests();
public static ServerRequests getInstance(){
return serverRequests;
}
public LoginResponse ClientLogin(final LoginRequest request, Context context){
final ProgressDialog dialog = DialogueUtils.getInstance().showProgressDialog(context);
dialog.setMessage("Loading...");
dialog.show();
RestApi mApi = RetrofitProvider.getInstance().getRestApi();
Call<UserToken> call = mApi.clientLogin(request);
// Stores Login response
final LoginResponse loginResponse = new LoginResponse();
call.enqueue(new Callback<UserToken>() {
@Override
public void onResponse(Call<UserToken> call, Response<UserToken> response) {
dialog.dismiss();
if (response.isSuccessful()){
loginResponse.setMloginstatus(true);
loginResponse.setStatusCode(response.code());
loginResponse.setUserToken(response.body());
return;
}
// response isn't successful
loginResponse.setMloginstatus(false);
loginResponse.setStatusCode(response.code());
loginResponse.setMessage(response.message());
loginResponse.setUserToken(null);
}
@Override
public void onFailure(Call<UserToken> call, Throwable t) {
dialog.dismiss();
loginResponse.setMloginstatus(false);
loginResponse.setUserToken(null);
loginResponse.setMessage(t.getMessage());
loginResponse.setStatusCode(FAILURE_ERROR);
}
});
return loginResponse;
}
}
私は、Activityクラスに上記の関数の呼び出しを行います。ここ はコードで、
ここLoginRequest request = new LoginRequest();
request.setPassword(PASSWORD);
request.setEmail(USER_NAME);
// Calling Login function
LoginResponse response = ServerRequests.getInstance().ClientLogin(request, this);
応答クラスでは、次の一連のコード行が実行されています。したがって、アクティビティクラスは関数が呼び出し元のシーケンスに戻るまで待たない。
誰でも私にこれを行うためのより良いアプローチがお勧めしますか?
は、onResponse
または
onFailure
のいずれかを呼び出しは、バックグラウンドで行われ、その後、できるだけ早くコールが終了するように、2つのコールバックの一つが呼ばれ..あなた