我AsyncTask
的 s 始终存在于单独的包中,同时仍绑定到特定类型的Activity
. 他们在构造函数中接受它的实例并存储在局部变量中。尝试从创建一个封装相关内容并由其他活动扩展的抽象类
的角度进行思考。
像这样:Activity
AsyncTask
public abstract RemoteListActivity<T> extends ListActivity{
// calls AsyncTask, shows spinning progress dialog, etc
protected abstract T someConcreteMethod();
}
public final class CustomerListActivity extends RemoteListActivity<Customer>{
protected final Customer someConcreteMethod();
}
或者,如果事物不适合单个层次结构,请使用接口:
interface LazyLoadable {
void setLoadingState();
void setDefaultState();
}
public class MyActivity extends Activity implements LazyLoadable{
}
public final class AsyncTask extends AsyncTask<Void, Void, Void>{
private final LazyLoadable lazyLoadable;
public MyAsyncTask(Context ctx, LazyLoadable lazyLoadable){
super(ctx);
this.lazyLoadable = lazyLoadable;
}
}