PhonegapでAndroidサービスを作成する?(Phonegapアプリを閉じても動作するようにしたい)
質問
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つの状態を持つことができます(ベースは
アクティビティのライフサイクル
):
- 可視
- 不可視だが読み込まれる
- 読み込まれない
を用意したのですが サンプル で、Phonegapプラグインを実装しました。このプラグインは、アクティビティをSMS_RECEIVEDに登録することができます。アクティビティがスコープ外に出ると(onbeforeunloadイベント)、登録が解除されるので、問題1のみが処理されます。
3つの課題すべてを処理したい場合、受信したSMSインテントをアクティビティに転送する必要があります。それがロードされていない場合、システムは自動的にアクティビティをロードしてアクティブにします。しかし、これはもはやバックグラウンド サービスではなく、SMS が受信されるたびにアプリが表示されます。
これを望まない場合(本当にバックグラウンドサービスが必要な場合)、ネイティブ実装を提供する必要があります。
関連
-
[解決済み】このアクティビティでは、Theme.AppCompatテーマ(またはその子孫)を使用する必要があります。
-
[解決済み] アプリケーションを終了することは嫌われますか?
-
[解決済み] Eclipseが起動できない - Javaは起動したが終了コード=13を返した
-
[解決済み] APKファイルのリバースエンジニアリングを回避する方法
-
[解決済み】プログレスダイアログとバックグラウンドスレッドがアクティブなときに、画面の向きが変わるのをどう処理するか?
-
[解決済み】携帯電話のGoogle Playストアアプリで「このアプリを評価する」リンクが表示されるようになりました。
-
[解決済み】AndroidサービスがActivityと通信する方法
-
[解決済み] Gradleでビルドタイプを使用し、ContentProviderを使用する同じアプリを1つのデバイスで実行する。
-
[解決済み] WhatsAppでメッセージを送信する
-
[解決済み] PhoneGap: デスクトップのブラウザで動作しているかどうかを検出する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] getApplication()、getApplicationContext()、getBaseContext()、someClass.thisの違いと使い分け。
-
[解決済み] アプリ内課金テスト:android.test.purchased already owned
-
[解決済み] Gmailの3分割アニメーションシナリオの完全動作サンプル?
-
[解決済み] 複数のフィルタを持つBroadcastReceiverか、複数のBroadcastReceiverか?
-
[解決済み] 非ActivityクラスでContextを取得する [重複].
-
[解決済み] RecyclerViewのアイテムに波及効果を追加する
-
[解決済み] ProjectScopeServices に Factory タイプのサービスはありません。
-
[解決済み] Travis.yml ./gradlew : パーミッションが拒否されました。
-
[解決済み] Google Play ストア内部テストのロールアウトが開始できない
-
[解決済み] 文字列リソースにHTML?