2014-02-17 123 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); 
相關問題