我能想到的最简单的解决方案是修改
DelegateTaskCompleted界面,如下所示:
public interface DelegateTaskCompleted{ public void JsonArrayLoaded(AsyncTask<String, String, String> task, JSonArray result);}
然后,您
onPostExecute将自己发送回如下所示:
protected void onPostExecute(String file_url) { pDialog.dismiss(); delegate.JsonArrayLoaded(this, gotNearestbeacons);}
最后,
MainClass您可以在中根据以下类型进行条件检查
AsyncTask:
@Override public void JsonArrayLoaded(AsyncTask<String, String, String> task, JSonArray result) { if(task instanceof GettingBeaconsList) { // do stuff related to the beacon list } else if(task instanceof GettingAirports) { // do airport list stuff } }
这样一来,您就可以轻松识别
AsyncTask通过响应发送的,而不必跟踪响应的时间(如果一个花费的时间比另一个花费的时间长)等。
或者,让另一个类扩展,
AsyncTask但添加一个抽象变量以进行标识。
public class TrackableAsyncTask extends AsyncTask<String, String, String>{ public abstract int getId(); public static final int ID_AIRPORT = 1; public static final int ID_BEACONS = 2; ... etc}
然后让您的机场和灯塔
AsycTasks扩展此范围。这将要求他们实施该
getId方法。
public class GettingAirports extends AsyncTask<String, String, String> { public int getId(){ return ID_AIRPORT; }}
然后,
if (task instanceof GettingAirports)除了执行条件 *** 作外,还可以执行以下
switch语句:
switch(task.getId()){ case TrackableAsyncTask.ID_AIRPORT: // run airport pre}
希望这可以帮助。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)