2012-07-03 2 views
1

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

Я пробовал размножать его в отдельном iframe, но результат был довольно плохим.

В настоящее время я работаю над android, поэтому, если решение включает в себя создание плагина phonegap для опроса сервера вместо javascript, на данный момент это должно быть хорошо. Мне нужно обновить данные в локальном хранилище после опроса сервера.

ответ

1

Я реализовал это в IOS. Проблема с телефонной связью заключается в том, что вы не можете создать задачу таймера, которая запускает javascript, потому что если ваша .html-страница изменит задачу, она будет убита.

Если у вас нет только одного .html и вы динамически меняете часть тела. Если это так, то посмотрите на setInterval в javascript.

Если это не так, то реализация чего-то на javascript не является решением, в IOS я внедрил собственный плагин для запуска асинхронных вызовов веб-сервисов. Вы могли бы сделать что-то подобное, написав плагин, который запускает AsyncTask doInBackground(), а затем перенесет результаты в javascript. Существует много руководств по созданию настраиваемого плагина в телефонной запинке. Надеюсь, это поможет

+0

подтверждения? обсуждение? – 10s

2

Если вы планируете опросить только, когда приложение используется, setInterval() работает достаточно хорошо. Мое приложение использует jQuery Mobile, который по умолчанию только обновляет DOM, а перезагружает всю страницу, так что мой setInterval() продолжает работать сразу после запуска.

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

Одно из решений, которые я использовал с вышеуказанной комбинации:

  • , когда приложение работает Я использую setInterval() для проверки обновлений периодически.
  • Проверки, работает ли приложение или нет, прежде чем начать проверки обновлений
  • Если приложение не работает, то я использую сервисный код фона просто проверить, есть ли какие-либо обновления на сервере или не
  • Если есть обновления, я поставил уведомление в системном трее, чтобы уведомить пользователя о том, что его ждут обновления
  • Как только он запустил приложение, я вызываю службу для извлечения обновлений.

Таким образом, моя основная логика остается в стороне Javascript, и мне не нужно писать такую ​​же логику как в Javascript, так и в native.

Если обновления не очень часто, то вы должны рассмотреть возможность использования PushNotification

Смежные вопросы