Уточнение запросов Mobile Services с использованием подкачки

Для знакомства с возможностями платформы  вы можетеактивировать Microsoft Azure бесплатно!

Тема практической работы — использование подкачки для управления объемами данных, возвращаемыми службами Microsoft Azure Mobile Services для мобильных устройств в приложение Android. Учимся использовать методы запросов top и skip для запросов клиентов на получение конкретных «страниц» данных.

Примечание

Чтобы предотвратить переполнения данных в клиентах мобильных устройств, в службах Mobile Services используется автоматическое ограничение количества страниц в отклике. По умолчанию отклик может иметь максимум 50 элементов. Определяя размер страницы, можно явным образом запрашивать получение откликов, содержащих до 1 000 элементов.

В практической работе используются результаты операций и приложение из предыдущей работы Как начать работать с данными. Прежде чем выполнять эту работу, вам необходимо выполнить как минимум первую работу из серии по работе с данными — Как начать работать с данными.

1. Откройте в Eclipse проект, который вы создали во время выполнения практической работы Как начать работать с данными.

2. В меню Run (Выполнение) нажмите Run (Выполнить) и запустите приложение, затем введите текст в текстовое поле и нажмите кнопку Add (Добавить).

3. Повторите это действие не менее трех раз для того, чтобы в таблице TodoItem было сохранено более трех элементов.

4. В файле ToDoActivity.java замените метод RefreshTodoItems следующим кодом:

private void refreshItemsFromTable() { // Определение фильтрованного запроса, возвращающего 3 первых элемента. mToDoTable.where().field("complete").eq(false).top(3) .execute(new TableQueryCallback<ToDoItem>() { public void onCompleted(List<ToDoItem> result, int count, Exception exception, ServiceFilterResponse response) { if (exception == null) { mAdapter.clear(); for (ToDoItem item : result) { mAdapter.add(item); } } else { createAndShowDialog(exception, "Error"); } } }); }

Этот запрос возвращает три первых элемента, которые не отмечены как завершенные.

1. Перестройте и запустите приложение.

Обратите внимание, что отображаются только три первых результата из таблицы TodoItem.

2. (Не обязательно) С помощью программы проверки сообщений (средств разработчика браузеров или Fiddler) просмотрите универсальный код ресурса (URI) для запроса, отправленного в мобильную службу.

Обратите внимание, что метод top(3) транслирован в параметр запроса $top=3 в URI запроса.

3. Обновите метод RefreshTodoItems еще раз, используя следующий код:

private void refreshItemsFromTable() { // Определение фильтрованного запроса, возвращающего 3 первых элемента. mToDoTable.where().field("complete").eq(false).skip(3).top(3) .execute(new TableQueryCallback<ToDoItem>() { public void onCompleted(List<ToDoItem> result, int count, Exception exception, ServiceFilterResponse response) { if (exception == null) { mAdapter.clear(); for (ToDoItem item : result) { mAdapter.add(item); } } else { createAndShowDialog(exception, "Error"); } } }); }

Этот запрос пропускает первые три результата и возвращает следующие три. Он обеспечивает вывод второй «страницы» данных, размер которой ограничен тремя элементами.

Примечание

В практической работе рассматривается упрощенный сценарий, передающий жестко заданные значения подкачки в методы top и skip. В реальном приложении вы можете использовать такие же запросы, применяя элемент управления страничного навигатора или сопоставимые элементы пользовательского интерфейса, которые дают пользователям возможность переходить на предыдущую или следующую страницу. Кроме того, для получения общего количества элементов на сервере, а также объема выгружаемых данных можно вызвать метод theincludeInlineCount.

(Не обязательно) Снова просмотрите URI запроса, отправленного в мобильную службу.

Обратите внимание, что метод skip(3)транслирован в параметр запроса $skip=3URI запроса.