Android で Worklight を使用しているときにバックグラウンド プロセス/サービスを実行する方法を教えてください。私は多くの場所を見てきましたが、これに関して役立つものは何も見つかりませんでした.
3 に答える
アプリがバックグラウンドにあるときにバックグラウンド プロセスを実行することについて質問していると仮定します。問題は、アプリがバックグラウンドにあるときに PhoneGap の JavaScript が実行されないことです。バックグラウンド プロセス機能を提供するには、バックグラウンド プロセスを管理するプラグインを作成する必要があります。
http://docs.phonegap.com/en/2.2.0/guide_plugin-development_index.md.html
以前は、Worklight アプリで使用する PhoneGap プラグインの作成に関する Worklight のドキュメントがいくつかありましたが、見つからないようです。
Android でバックグラウンド プロセスを管理するための既存のプラグインが既に存在します
https://github.com/phonegap/phonegap-plugins/tree/master/Android/BackgroundService
技術的に言えば、説明したフローでは、javascript コードからプラグインを実行し、プラグイン内からサービスを開始する必要があるようです。ここでの非同期の問題は少しトリッキーかもしれません。プラグインから js への戻りは非同期ですが、ネイティブ コード内のスレッド自体 (サービス) も非同期であるためです。では、ネイティブ コードを同期的に実行するだけで十分ではないでしょうか? (これは、ネイティブに対しては「相対」同期ですが、js に対しては「相対」非同期になります)
Android サービス - http://developer.android.com/guide/components/services.html
アプリケーションの JavaScript 部分について話している場合は、setTimeout(function(){...}, 0); を使用してスレッドを切り離すことができます。これは、JavaScript が提供しなければならないバックグラウンド スレッドに最も近いものです。もちろん、Web ワーカーを調べることもできますが、それでは事態が少し複雑になります。