快速获取朋友的姓名和ID列表

时间:2011-07-27 02:00:02

标签: android facebook-graph-api

在我的应用中,我通过以下内容获得用户的朋友:

https://graph.facebook.com/me?fields=id,name&access_token=xxxx

以上实际上是由Facebook Android SDK完成的,所以我实际上是在创建这样的请求:

    Bundle params = new Bundle();
    params.putString("fields", "name,id");
    asyncFacebookRunner.request("me/friends", params, "GET", listener, null);

我像这样解析JSON响应:

            JSONObject data = Util.parseJson(response);
            JSONArray friendsData = data.getJSONArray("data");
            mDbAdapter.deleteAllFriends();

            for (int i = 0; i < friendsData.length(); i++) {
                JSONObject friend = friendsData.getJSONObject(i);
                mDbAdapter.addFriend(friend.getString("name"),
                        friend.getString("id"));
            }

Util类是Facebook Android SDK的一部分。

在启用了wifi的Android手机上,发送,检索和解析响应大约需要15-20秒(我的帐户有大约370位朋友)。我已经看到其他几个应用程序在大约2秒钟内完成它。什么在减缓我的速度?

1 个答案:

答案 0 :(得分:3)

我认为延迟的唯一原因是数据库适配器,即在解析结果时添加项目。

要优化一点,您可以删除循环中的一些分配,并通过单个请求将数据添加到数据库中:

JSONObject json = Util.parseJson(response);
JSONArray friendsData = json.getJSONArray("data");
String ids[] , names[] = new String[friendsData.length()];
for(int i = 0; i < friendsData .length(); i++){ 
        ids[i] = friendsData .getJSONObject(i).getString("id");
        names[i] = friendsData .getJSONObject(i).getString("name");
        }

//TODO Add data to your database