详细说明,我正在使用interface将AsyncTask中的hashmaps列表返回到我的Activity中。 AsyncTask在Activity本身中触发,结果在实现的接口方法中捕获。
// This triggers AsyincTask in onCreate method of the Activity
JSONparser.executeParser(url, Profile.this);
// OnPostExecute returns data through interface method
@Override
protected void onPostExecute(String downloadedData) {
super.onPostExecute(downloadedData);
// If web service returned data
if (!downloadedData.equals("")) {
JSONObject jObject;
try {
// Put data into JSON Object and pass it to parser
jObject = new JSONObject(downloadedData);
parsedData = ParseJSONData.parse(jObject);
} catch (Exception e) {
Log.d("ParserException", e.toString());
}
asyncInterface.onTaskFinished(parsedData);
}else{
asyncInterface.onTaskFinished(null);
}
}
//In activity I catch data from implemented interface and set up ListView
@Override
public void onTaskFinished(List<HashMap<String, String>> data) {
// TODO Auto-generated method stub
MyHelper.getNotifications(context, notifications, data);
}
我的问题是,如果我要在我的Activity中触发两个AsyncTasks,我将如何区分此接口方法中返回的数据?
例如,如果我想从两个不同的Web服务获取数据:
// This triggers AsyincTask in onCreate method of the Activity
JSONparser.executeParser(url1, Profile.this);
JSONparser.executeParser(url2, Profile.this);
如何在界面方法中区分url1中的数据和url2中的数据?
@Override
public void onTaskFinished(List<HashMap<String, String>> data) {
// TODO Auto-generated method stub
}
答案 0 :(得分:0)
也许你应该使用一些包装器来代替列表数据参数,它将包含你的列表数据和关于它的其他信息(例如url的哈希码)。
另请使用
"".equals(downloadedData)
而不是
downloadedData.equals("")
因为downloadedData
是null
...
答案 1 :(得分:0)
将AsyncTask传回你的监听器......
@Override
public void onTaskFinished(AsyncTask task, List<HashMap<String, String>> data) {
if(task == myFirstTask) then ...
// TODO Auto-generated method stub
MyHelper.getNotifications(context, notifications, data);
}