Получить список имен и идентификаторов друзей быстро - PullRequest
2 голосов
/ 27 июля 2011

В моем приложении я получаю друзей пользователя со следующими данными:

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

Выше на самом деле выполняется Android SDK Facebook, поэтому я фактически создаю запроснапример:

    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 является частью SDK Facebook Android.

На моем телефоне Android с включенным wifi для отправки, получения и анализа ответа требуется около 15-20 секунд (в моем аккаунте около 370 друзей).Я видел несколько других приложений, которые делают это примерно за 2 секунды.Что меня здесь тормозит?

1 Ответ

3 голосов
/ 19 октября 2012

Думаю, единственная небольшая причина задержки - это ваш адаптер базы данных, то есть добавление элементов при анализе результата.

Чтобы немного оптимизировать, вы можете удалить некоторые назначения в цикле и добавить данные в базу данных с помощью одного запроса:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...