package ee.ajapaik.android.loader;
import android.content.Context;
import android.support.v4.content.AsyncTaskLoader;
public abstract class CachingAsyncLoader<T> extends AsyncTaskLoader<T> {
private T cache;
public CachingAsyncLoader(Context context) {
super(context);
}
@Override
public abstract T loadInBackground();
public void deliverResult(T result) {
if (isReset()) {
cache = null;
}
if (isStarted()) {
super.deliverResult(result);
}
}
@Override
protected void onStartLoading() {
super.onStartLoading();
if (cache != null) {
deliverResult(cache);
} else {
forceLoad();
}
}
@Override
protected void onStopLoading() {
super.onStopLoading();
cancelLoad();
}
@Override
protected void onReset() {
super.onReset();
onStopLoading();
}
}