1
最新のAndroidアプリケーションでRetrofitを使用してFacebookログインを実装しました。 SplashActivityとLoginActivityでは、私は私のPOSTリクエストを作りたい:重複するコールバックを避ける
FacebookLoginInfo facebookLoginInfo = new FacebookLoginInfo(token);
Call<User> call = ApiManager.getService().authenticateFacebookUser(facebookLoginInfo);
call.enqueue(userCallback);
FacebookLoginInfoは、Facebookのアクセストークンを持つ単純なPOJOです。 ApiManagerは私のサービスのためのシングルトンクラスです。
私の問題は、userCallbackがSplashActivityとLoginActivityに重複していることです。このコールバックを1回だけ定義するのがベストプラクティスですか?ユーザー・コールバックの
定義:
private Callback<User> mUserCallback = new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
dismissProgressDialog();
int statusCode = response.code();
if (statusCode == 200) {
User user = response.body();
Log.e(LOG_TAG, "user: " + user.toString());
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
intent.putExtra(Global.EXTRA_USER, user);
startActivity(intent);
} else if (statusCode == 400) {
Toast.makeText(LoginActivity.this, getString(R.string.error_token_required), Toast.LENGTH_SHORT).show();
} else if (statusCode == 403) {
Toast.makeText(LoginActivity.this, getString(R.string.error_invalid_token), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<User> call, Throwable t) {
dismissProgressDialog();
t.printStackTrace();
Toast.makeText(LoginActivity.this, getString(R.string.error_call_failed), Toast.LENGTH_SHORT).show();
}
};
感謝を。 call.enqueue(new Callback <>(){})を使用して非同期呼び出しを行うことができました。私の質問は、2つの異なるアクティビティで同じコールバックを使用したい場合、ベストプラクティスは何ですか? – baptisterobert
私はあなたがコールバックを実装し、あなたが欲しいところでそれを使用するUserCallbackと呼ばれるクラスを作成すべきだと思います。 – humazed
私はオープンソースのアプリケーションに取り組みました。この問題の解決方法は です。 https://github.com/fossasia/open-event-android/blob/master/app%2Fsrc%2Fmain%2Fjava%2Forg %2Ffossasia%2Fopenevent%2Fapi%2Fprocessor%2FEventListResponseProcessor.java – humazed