web-dev-qa-db-ja.com

Android Phonegapを使用したサービスを作成しますか?(閉じている場合でもphonegapアプリを実行します)

Phonegapを使用してAndroidアプリで作業してきましたが、アプリを閉じてもアプリでJava/jsコードを実行できるようにしたいと考えています。 phonegapでサービスプラグインを作成する場合、javascriptコードまたはjavaのみを実行できますか?

誰かがこのようなことをしていますか?私はこの議論を見つけましたが、うまくいかないようでした: http://groups.google.com/group/phonegap/browse_thread/thread/722b0e796baa7fc6 それで私が今持っているすべてです。

私がそれを理解することができない場合、ネイティブに開発する前に、誰かがこれをやったことがあるかどうかを尋ねると思いました。同様のことをするphonegapプラグインを見つけることができないようです。

編集:私はJavaサービスとしてコードを実行するアプリを持っています。しかし、sendjavascriptを呼び出すと動作しません。それでバックグラウンドでjavascriptコードを実行する方法もありますアプリがphonegapで閉じられたとき

ありがとう

72
Jonovono

いいえ、バックグラウンドで(少なくとも私の意見では)Javascriptコードをサービスとして実行することはできません。 Phonegap on Android=は、WebViewをホストする Droidgap という特別なアクティビティを使用します。このブラウザコントロールはJavaScriptを実行します。つまり、JS実行はこのアクティビティ内でのみ処理できます。それが見えるかどうかに関係なく。

Googleグループからリンクしたコードは、Javaで開発されたサービスをDroidGapアクティビティにバインドしようとするため、サービスはJSで記述されていません。

DroidGapアクティビティから派生した子アクティビティ内のJSコード内に、バックグラウンドアクティビティを含めることができます。たとえば、アクティビティにバックグラウンドスレッドがあり、JSコールバック関数があり、スレッドがこのコールバック機能を呼び出すようにします。

サービスが本当に必要な場合は、ネイティブにする必要があります。

更新:
JSコードは、Droidgapアクティビティでのみ実行できます。アクティビティには3つの状態があります( アクティビティのライフサイクル に基づく):

  1. 見える
  2. 見えないがまだロードされている
  3. 読み込まれていない

Phonegapプラグインを実装する sample を提供しました。プラグインにより、アクティビティは自身をSMS_RECEIVEDに登録できます。アクティビティがスコープ外になると(イベントonbeforeunload)、登録が解除されるため、問題1のみが処理されます。

3つの問題すべてを処理する場合は、着信SMS意図をアクティビティに転送する必要があります。ロードされない場合、システムはアクティビティを自動的にロードしてアクティブにします。しかし、これはバックグラウンドではありませんサービスは、SMSが受信されるたびにアプリが表示されるようになります。

これが必要ない場合(本当にバックグラウンドサービスが必要な場合)、ネイティブ実装を提供する必要があります。

56
ChrLipp

この記事 Phonegapを使用してAndroidにサービスを作成する方法に関する問題があります。

Phonegapを使用してバックグラウンドサービスを簡単に構築するために、優れたプラグインを使用しています。ただし、JSは使用できません

JSをバックグラウンドで実行する方法を見つけられませんでした。ただし、プラグインを使用してJavaからJSにパラメーターを渡すことができます。これは非常に便利です。ただし、JavaのJSコードを書き換える必要があります。 JSのみを実行する特定の理由がない限り、 (しかし、あってはならない...)

このページにアクセスする一部の人々に役立つことを願っています。

8
Bruno

はい、それは非常に簡単です...プラグインbackgroundJSをインストールするだけです:

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

バックグラウンドでjavascriptを実行し、ローカル通知プラグインと組み合わせて、いつでもユーザーに通知を送信することもできます。これを行うと、バッテリーが速く消耗することに注意してください。 iOSポリシーに問題を作成します。幸運を!!!

4
Michel Tobon

追加しようとすることができますplugincordova-plugin-background-mode

しかし、著者が言うように:
無限のバックグラウンドタスクは、ほとんどのモバイルオペレーティングシステムで公式にサポートされていないため、パブリックストアベンダーに準拠していません。成功したサブミッションは保証されません。自己責任でプラグインを使用してください!

2
Maxim