私AsyncTask
の は、特定のタイプの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;
}
}