我正在开发一个包含facebook集成的Android应用程序。如果我执行多个fql查询,我将按更改顺序获取响应。
我使用以下代码:
public static ArrayList<String> photoAlbumIdArr = null;
@Override
public void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.main);
photoAlbumIdArr = new ArrayList<String>();
photoAlbumIdArr.add("111114545_25133454545");
photoAlbumIdArr.add("111114590_25133434768");
photoAlbumIdArr.add("111114232_2513345487");
photoAlbumIdArr.add("111114512_25133454456");
startProgress();
}
public void startProgress() {
// Do something long
PhotoGalleryActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
String fqlQuery = "";
for(int k=0;k<photoAlbumIdArr.size();k++)
{
fqlQuery = "SELECT pid, src FROM photo WHERE aid = '"+photoAlbumIdArr.get(k)+"'";
Bundle params = new Bundle();
params.putString("q", fqlQuery);
session = Session.getActiveSession();
Request request = new Request(session, "/fql", params,
HttpMethod.GET, new Request.Callback() {
public void onCompleted(Response response) {
String jsonResponse = response.toString();
Log.i(LOG_TAG, jsonResponse);
}
});
Request.executeBatchAsync(request);
}
}
});
}
这里在for循环完成后调用回调响应。在那我得到无序响应(即)获得第一张专辑照片作为最后或中间响应同样。可能是什么问题。为什么我得到无序的回应。
答案 0 :(得分:0)
这可能是因为您的FQL查询中没有ORDER BY子句。
尝试使用以下内容:
SELECT pid, src FROM photo WHERE aid = '{album id}' ORDER BY modified
这将确保返回的顺序始终相同(假设在查询之间没有修改图像)。