HTTPRequests
たとえば、いくつかを使用するアプリがあります
セッション ID を取得する
位置データを取得する
既存のカテゴリを取得する
(...) その他
HTTPRequestHandler
基本的にすべての for each Request を管理するを作成しました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 ..)に非同期タスクを入れる方法はありますか?