GCM Network Manager, выполняется ли несколько разовых задач в последовательном порядке?

Введение

У меня есть приложение, которое позволяет пользователю добавлять список музыкальных альбомов в избранное. Содержимое музыкальных альбомов хранится на устройстве, что обеспечивает автономный доступ.

Любимые варианты также хранятся в автономном режиме через локальную базу данных SQLite.

Однако, если Интернет активен, вызов избранного запроса происходит как обычно, я хотел бы поддерживать это в автономном режиме.

Я наткнулся на GCM Network Manager, который позволит мне запланировать задачу, когда сеть активна, поэтому каждый любимый запрос, сделанный в автономном режиме, будет запланирован.

Проблема и мои вопросы

Я просмотрел документацию и искал, но не могу найти ответы на эти вопросы.

  1. Могу ли я отправить несколько разовых задач с одним и тем же тегом и убедиться, что они не переопределены? Я спрашиваю об этом, потому что в документах говорится, что метод setUpdateCurrent класса построителя одноразовых задач по умолчанию является ложным, чтобы предположить, что он не переопределен. Однако в методе setTag указано, что если тег тот же, существующая задача будет обновлена, а это не то, что мне нужно. Я хочу поставить ту же задачу в очередь, потому что это будет уникальный запрос избранного музыкального альбома

  2. Я понял, что вышеуказанное можно решить, установив тег идентификатора музыкального альбома, который у меня есть, но я не знаю, в каком порядке диспетчер заданий GCM выполняет свои задачи. я использую пример

Вот две задачи, у них уникальные теги, первая была отправлена ​​первой, а затем чуть позже второй.

  • Tag = 1A-favourite
    • Tag = 1A-unfavourite

Будет ли менеджер сети GCM выполнять эти задачи в том порядке, в котором они были отправлены? Это может вызвать проблему, если неизбранный запрос был сделан до избранного.

Спасибо, что прочитали мой вопрос.


person Ersen Osman    schedule 07.01.2016    source источник


Ответы (1)


Вы пробовали что-то вроде:

gcmNetworkManager.cancelTask("1A-favourite", MyTask.class);
gcmNetworkManager.schedule(myUnFavoriteTask);

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

Кроме того, вы должны видеть задачи, заменяющие друг друга, только если их теги идентичны, и вы .setUpdateCurrent(true) в билдере. Как вы указали, по умолчанию он равен false.

person Paul    schedule 26.01.2016