выполнение длительных фоновых задач в телефонной запинке

64
8

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

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

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

спросил(а) 2021-01-25T09:04:42+03:00 6 месяцев назад
1
Решение
78

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

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

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

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

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

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

ответил(а) 2021-01-25T09:04:42+03:00 6 месяцев назад
63

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

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


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

ответил(а) 2021-01-25T09:04:42+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема