-1

我正在开发一个包含 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 循环完成后调用的。在那我得到无序响应(即)同样将第一张专辑照片作为最后或中间响应。可能是什么问题。为什么我得到无序的响应。

4

1 回答 1

0

这可能是因为您的 FQL 查询中没有 ORDER BY 子句。

尝试使用类似的东西:

SELECT pid, src FROM photo WHERE aid = '{album id}' ORDER BY modified

这将确保返回的顺序始终相同(假设在查询之间没有修改图像)。

于 2013-05-23T02:18:35.227 回答