在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看到我的编辑 –