创建一个扩展AsyncTask的抽象类

时间:2016-02-04 14:12:13

标签: java android android-asynctask

我想创建一个中间抽象类,扩展AsyncTask以在密切相关的类之间共享代码。真正的具体类将扩展中间抽象类以定义细节。

对于AsyncTask,我需要指定参数,进度和结果。但是,在中间层,我没有任何实现细节。那么我应该如何留下具体类的详细定义呢?

//实现共享代码的中间层

public class SiteAsyncTask extends AsyncTask<?, ?, ?>{

//具体层

public class GetSiteAsyncTask extends SiteAsyncTask<Void, Void, Site> {

public class ListSiteAsyncTask extends SiteAsyncTask<Void, Void, ArrayList<Site> {

//在中间抽象层,如何定义参数,进度和结果是通用的。结果可以是网站或网站的Arraylist

public class SiteAsyncTask extends AsyncTask<?, ?, ?>{

//在中间层,如何定义doInBackground以使其成为通用的。它可以是Site的Site或ArrayList

protected Site doInBackground(Void... params) {

由于

1 个答案:

答案 0 :(得分:0)

当使用泛型扩展类时,您可以重新定义子类中的泛型并将它们重新应用于父类&#39;定义。

如果您想要所有参数,

public class SiteAsyncTask<Input, Progress, Result> extends AsyncTask<Input, Progress, Result>{}

如果您只关心结果,

public class SiteAsyncTask<Result> extends AsyncTask<Void, Void, Result>{}

如果你不关心任何事,

public class SiteAsyncTask extends AsyncTask<Void, Void, Void>{}