在Android中,當我使用AsyncTask
,我通常使用的接口方法,這樣我可以在activity
實現它:默認接口實現
public class DownloadTask extends AsyncTask<String, Integer, Response> {
private Context context;
private DownloadTaskListener listener;
private List<MyObject> objectList;
public interface DownloadObjectsTaskListener {
void startTask();
void finishTask();
void ObjectsDownloaded(List<Object> ObjectList);
void withoutInternet();
}
public DownloadObjectsTask(Context context) {
this.context = context;
}
public void setListener(DownloadObjectsTaskListener listener) {
this.listener = listener;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
if (CommonUtils.isThereInternetConnection(context)) {
listener.startTask();
} else {
listener.withoutInternet();
cancel(true);
}
}
protected Response doInBackground(String... urls) {
RestApiObject api2 = new RestApiObject();
return api2.getMyObjects();
}
protected void onPostExecute(Response results) {
listener.finishTask();
if (results != null) {
if (results.body() != null) {
ObjectsResponse request = (ObjectsResponse) results.body();
ObjectList = request.getObjectsList();
listener.ObjectsDownloaded(ObjectList);
} else {
ResponseBody jsonObject = results.errorBody();
try {
Log.d(DEBUG, jsonObject.string());
} catch (IOException e) {
e.printStackTrace();
}
}
} else {
Log.d(DEBUG, "result is null");
}
}
}
,然後在我的Activity
,我實現接口,並定義方法。
事情是爲方法,如withoutInternet()
,方法定義將永遠是相同的,所以它將只是冗餘代碼每次我重新定義方法的實現,即使我提取代碼的方法。
有沒有辦法定義一次withoutInternet()
?
我無法在我的活動中擴展抽象類,因爲活動已經擴展AppCompatActivity。 –
@JuliatzindelToro看到我的編輯 –