retrofit cancelableCallbacks for fragment use
public class CancelableCallback<T> implements Callback<T> {
private Callback<T> callback;
private boolean canceled;
public CancelableCallback(Callback<T> callback) {
this.callback = callback;
canceled = false;
}
public void cancel() {
canceled = true;
callback = null;
}
@Override public void success(T t, Response response) {
if (!canceled) {
callback.success(t,response);
}
}
@Override public void failure(RetrofitError error) {
if (!canceled) {
callback.failure(error);
}
}
}
public class Example extends Fragment {
private CancelableCallback<Model> mCallback = new CancelableCallback<Visit>(new Callback<Model>() {
@Override public void success(Model visit, Response response) {
}
@Override public void failure(RetrofitError error) {
});
@Override public void onDestroy() {
super.onDestroy();
mCallback.cancel();
}
}