package com.chrome.codereview.utils; import android.content.AsyncTaskLoader; import android.content.Context; import com.chrome.codereview.requests.ServerCaller; /** * Created by sergeyv on 19/4/14. */ public abstract class CachedLoader<T> extends AsyncTaskLoader<T> { private T result; public CachedLoader(Context context) { super(context); } @Override protected void onStartLoading() { if (result != null) { deliverResult(result); return; } forceLoad(); } @Override protected void onReset() { super.onReset(); onStopLoading(); result = null; } @Override public void deliverResult(T data) { result = data; super.deliverResult(data); } @Override public void onCanceled(T data) { result = data; super.onCanceled(data); } @Override protected void onStopLoading() { cancelLoad(); } public ServerCaller serverCaller() { return ServerCaller.from(getContext()); } }