1.声明一个interface
public interface ICallback<RESULT> { void onCallback(RESULT data); void onError(Throwable error); } 2.当进行异步操作时 比如网络去请求的结果
public void updateCurrentUserInfo(final DBCurrentUser currentUser, final ICallback<DBCurrentUser> callback) { ApiEndpointClient.getEndpointV2().getCurrentUser("Bearer " + SharedPrefUtils.getInstance().getString(AppConstant.SharedPreferenceKey.CURRENT_TOKEN)) .enqueue(new Callback<HttpResponse<CurrentUserInfo>>() { @Override public void onResponse(Call<HttpResponse<CurrentUserInfo>> call, Response<HttpResponse<CurrentUserInfo>> response) { if (currentUser != null && HttpRequestUtil.hasValidBody(response) && response.body().getData().getAttributes() != null) { MonkeyLog.D("CurrentUserHelper updateCurrentUserinfo() success updateUserinfo = " + response.body().getData()); CurrentUserInfo currentUserInfo = response.body().getData(); if (currentUserInfo != null) { currentUserInfo.updateCurrentUserInfo(currentUser); if (callback != null) { callback.onCallback(currentUser); } } } else { onFailure(call, new NullPointerException("Null user info returned")); } } @Override public void onFailure(Call<HttpResponse<CurrentUserInfo>> call, Throwable t) { MonkeyLog.D("CurrentUserHelper updateCurrentUserinfo() onFailure() 111 t = " + t); if (t != null) { t.printStackTrace(); } if (callback != null) { callback.onError(t); } } }); }
3.外围去调取的时候:
CurrentUserHelper.getInstance().updateCurrentUserInfo(dbCurrentUser, new ICallback<DBCurrentUser>() { @Override public void onCallback(DBCurrentUser currentUserInfo) { dispatchActivity(); } @Override public void onError(Throwable error) { dispatchActivity(); } });