1. ホーム
  2. android

PhonegapでAndroidサービスを作成する?(Phonegapアプリを閉じても動作するようにしたい)

2023-12-26 19:35:05

質問

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

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

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

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

ありがとうございます。

どのように解決するのですか?

いいえ、バックグラウンドでJavascriptコードをサービスとして実行することは(少なくとも私の意見では)不可能です。Android上のPhonegapは、次のような特別なアクティビティを使用します。 ドロイドギャップ と呼ばれる特別なアクティビティを使用し、WebViewをホストします。このブラウザコントロールがJavaScriptを実行します。つまり、JSの実行は、可視か否かにかかわらず、このアクティビティの内部でのみ処理することができます。

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

DroidGapアクティビティから派生した子アクティビティ内のJSコードで、いくつかのバックグラウンドアクティビティを持つことができます。 例えば、アクティビティにバックグラウンドスレッドを持ち、JSコールバック関数を持ち、スレッドにこのコールバック関数を呼び出させることができます。

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

更新しました。

JSコードはDroidgapアクティビティでのみ実行可能です。アクティビティは3つの状態を持つことができます(ベースは アクティビティのライフサイクル ):

  1. 可視
  2. 不可視だが読み込まれる
  3. 読み込まれない

を用意したのですが サンプル で、Phonegapプラグインを実装しました。このプラグインは、アクティビティをSMS_RECEIVEDに登録することができます。アクティビティがスコープ外に出ると(onbeforeunloadイベント)、登録が解除されるので、問題1のみが処理されます。

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

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