Создание Службы Android с помощью Phonegap? (Есть приложение phonegap работать даже при закрытии)


Я работал над приложением для Android с помощью Phonegap и теперь хотел бы сделать это так, когда приложение закрыто, оно все еще может выполнять код java/js в приложении. Поэтому я понимаю, что мне нужно создать сервис. Если я создам плагин службы на phonegap, могу ли я по-прежнему выполнять код javascript или только java?

кто-нибудь делает что-то подобное? Я нашел это обсуждение, но, похоже, не работает: http://groups.google.com/group/phonegap/browse_thread/thread/722b0e796baa7fc6 Так что это все, что у меня есть сейчас.

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

EDIT: у меня есть приложение, которое выполняет Java-код в качестве службы. Однако, когда он вызывает sendjavascript, он не работает. Так есть ли способ иметь код javascript, работающий в фоновом режиме, а также когда приложение закрыто с помощью phonegap?

спасибо

4 70

4 ответа:

нет, невозможно запустить Javascript-код в фоновом режиме (по крайней мере, на мой взгляд) в качестве сервиса. Phonegap на Android использует специальную активность под названием Droidgap, в котором находится объект WebView. Этот элемент управления браузера выполняет JavaScript. Это означает, что выполнение JS может обрабатываться только внутри этого действия, независимо от того, видно оно или нет.

код, который вы связали из групп Google, пытается связать службу, разработанную на Java, с активностью DroidGap, поэтому сервис не написан в JS.

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

Если вам действительно нужна услуга, вы должны пойти родной.

обновление:
JS-код может быть выполнен только с помощью действия Droidgap. Деятельность может есть 3 состояния (на основе жизненный цикл занятий):

  1. видимого
  2. невидимый, но все еще загруженный
  3. не загружается

Я пример в котором я реализовал плагин Phonegap. Плагин позволяет активности зарегистрироваться в SMS_RECEIVED. Когда activies выходит из области действия (событие onbeforeunload), он отменяет регистрацию, поэтому обрабатывается только проблема 1.

когда вы хотите все 3 проблемы обработаны, вы должны переслать входящий SMS намерение к деятельности. Когда он не загружен, система автоматически загрузится и активирует активность. Но это больше не фоновая служба, ваше приложение станет видимым всякий раз, когда будет получено SMS.

Если вы не хотите этого (если вы действительно хотите фоновая служба), вы должны предоставить собственную реализацию.

здесь в этой статье о том, как создать сервис на Android с Phonegap, который дает хорошую информацию о вашей проблеме.

Он использует большой плагин для того, чтобы построить фоновый сервис с phonegap легко. Но вы не можете использовать JS, хотя

Я не нашел способ заставить JS работать в фоновом режиме. Но вы можете передавать параметры из Java в JS и наоборот с помощью плагина...что весьма полезно. Вам все равно нужно будет переписать свой JS в Java код. Если у вас нет конкретной причины только хотеть, чтобы JS был запущен? (Но этого не должно быть...)

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

да, и это очень просто... просто установите плагин backgroundJS:

https://build.phonegap.com/plugins/430

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

вы можете попробовать добавить плагинКордова-плагин-фоновый режим

но как говорит автор:
бесконечные фоновые задачи не поддерживаются официально в большинстве мобильных операционных систем и, следовательно, не совместимы с поставщиками публичных магазинов. Успешное подчинение не гарантируется. Использовать плагин на свой страх и риск!