我有一个应用程序,它使用了几个HTTPRequests
例如
获取会话 ID
获取一些位置数据
获取现有类别
(...) 还有更多
我创建了一个HTTPRequestHandler
,它基本上管理AsynTasks
每个请求的所有内容...这很好用,但我的问题是,我不知道管理不同的AsynTasks
. 例如,您需要先获取SessionId Task
才能启动GetSomeLocationData Task
所以在我的HTTPRequestHandler
我有一个队列,它开始取决于AsyncTasks
:
private void startSessionIdTask(...) {
//...
GetSessionIdTask mGetSessionIdTask = new GetSessionIdTask(this);
mGetSessionIdTask.execute(url);
}
//and from the postExecute() in GetSessionIdTask I call
public void setSessionId(int mSessionId) {
mDataHelper.setmSessionId(mSessionId); //set id
String url = API_URL + API_GET_FAVORITES + URL_VARIABLE;
List<NameValuePair> params = new LinkedList<NameValuePair>();
params.add(new BasicNameValuePair("session_id", getSessionId()));
String paramString = URLEncodedUtils.format(params, "utf-8");
url += paramString;
//and finally start another Tasks (and so one...)
GetLocationsTask mGetLocationsTask = new GetLocationsTask(this);
mGetSessionIdTask.execute(url);
}
然而,这工作正常,但问题是,(取决于连接),这个队列需要时间,用户可以启动其他AsynTasks
失败,因为一些初始数据尚未加载。
我可以设置一些布尔值,isSessionIdLoaded
或者可以阻止用户的 UI,但我想知道,是否有更好的解决方案?!
所以我的问题是:有没有办法将异步任务放入某种队列(ArrayList,Map..)中,将连续执行?