2014-02-17 78 views
0

我的应用程序中有很多活动和AsyncTasks。我想用接受通用AsyncTask和布尔值的方法来定义接口。我将在所有活动中实现该接口,并希望从AsyncTask中调用接口的方法。如何声明接受通用AsyncTask作为参数的函数

我应该如何声明接受AsyncTask的所有子类的方法?我想使它成为泛型,这样我就可以使用instanceof运算符来确定哪个asyncTask在活动中调用Override方法。 我试过用:

public onUpdate(AsyncTask<Params, Progress, Result> task,boolean show); 

但是不允许的。

回答

1

你可以声明这样说:

private class SomeTask extends AsyncTask<String, Integer, Long> { 

    @Override 
    protected Long doInBackground(String... params) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

} 

,并调用你的方法:

public void onUpdate(AsyncTask<?, ?, ?> task, boolean show) { 

} 

然后,您可以通过扩展AsyncTask使用它

onUpdate(new SomeTask(), true); 
1

你可以声明方法如下...

public void onUpdate(AsyncTask<Object, Object, Object> task,boolean show); 
相关问题