74

私はPhonegapを使用してAndroidアプリに取り組んでいますが、アプリを閉じてもアプリでjava/jsコードを実行できるようにしたいと考えています。だから私はサービスを作成する必要があることを理解しています。phonegapでサービスプラグインを作成した場合でも、javascriptコードを実行できますか、それともjavaのみを実行できますか?

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

ネイティブでの開発に移る前に、理解できない場合は、誰かが以前にこれを行ったことがあるかどうかを尋ねると思いました。似たようなことをするphonegapプラグインが見つからないようです。

編集:Javaコードをサービスとして実行するアプリがあります。ただし、sendjavascriptを呼び出すと、機能しません。では、アプリがphonegapで閉じられたときに、JavaScriptコードをバックグラウンドで実行する方法はありますか?

ありがとう

4

4 に答える 4

55

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

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

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

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

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

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

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

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

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

于 2012-05-03T08:47:26.037 に答える
9

Android で Phonegap を使用してサービスを作成する方法に関するこの記事があり、問題に関する良い情報が得られます。

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

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

このページを訪れた方の参考になれば幸いです。

于 2013-07-16T20:18:07.527 に答える
4

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

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

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

于 2014-02-10T13:44:44.443 に答える