package org.qii.weiciyuan.ui.loader;
import org.qii.weiciyuan.bean.android.AsyncTaskLoaderResult;
import org.qii.weiciyuan.support.error.WeiboException;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.content.AsyncTaskLoader;
/**
* User: qii
* Date: 13-5-15
*/
public abstract class AbstractAsyncNetRequestTaskLoader<T>
extends AsyncTaskLoader<AsyncTaskLoaderResult<T>> {
private AsyncTaskLoaderResult<T> result;
private Bundle args;
public AbstractAsyncNetRequestTaskLoader(Context context) {
super(context);
}
@Override
protected void onStartLoading() {
super.onStartLoading();
if (result == null) {
forceLoad();
} else {
deliverResult(result);
}
}
@Override
public AsyncTaskLoaderResult<T> loadInBackground() {
T data = null;
WeiboException exception = null;
try {
data = loadData();
} catch (WeiboException e) {
exception = e;
}
result = new AsyncTaskLoaderResult<T>();
result.data = data;
result.exception = exception;
result.args = this.args;
return result;
}
protected abstract T loadData() throws WeiboException;
public void setArgs(Bundle args) {
if (result != null) {
throw new IllegalArgumentException("can't setArgs after loader executes");
}
this.args = args;
}
}