morristech
3/10/2017 - 6:01 AM

retrofit cancelableCallbacks for fragment use

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();
    }
    
}