1

更新のためにサーバーをポーリングし続ける JavaScript のスニペットを実行しようとしています。エンド ユーザーの観点から、アプリケーションのパフォーマンスへの影響を最小限に抑えてこれを機能させる最善の方法は何ですか。

別の iframe で生成しようとしましたが、結果のパフォーマンスはかなり悪かったです。

私は現在アンドロイドに取り組んでいるので、解決策がjavascriptの代わりにサーバーをポーリングするphonegapプラグインの作成を含む場合、今のところ問題ありません。サーバーをポーリングした後、ローカル ストレージのデータを更新する必要があります。

4

2 に答える 2

2

私はこれをIOSに実装しました。phonegapの問題は、.htmlページが変更されるとタスクが強制終了されるため、javascriptを実行するタイマータスクを作成できないことです。

.htmlが1つだけで、ボディ部分を動的に変更している場合を除きます。その場合は、javascriptでsetIntervalを検索してください。

そうでない場合は、JavaScriptに何かを実装することは解決策ではありません。IOSでは、非同期Webサービス呼び出しを実行するためのカスタムプラグインを実装しました。同様のことを行うことができます。AsyncTaskdoInBackground()を実行するプラグインを作成し、その結果をjavascriptにポストバックします。phonegapでカスタムプラグインを作成する方法に関する多くのチュートリアルがあります。それが役に立てば幸い

于 2012-07-03T07:39:10.630 に答える
2

アプリケーションが使用されているときにのみポーリングすることを計画している場合は、setInterval()かなりうまく機能します。私のアプリケーションは jQuery Mobile を使用しています。これは、デフォルトではページ全体をリロードするのではなく DOM のみを更新するため、setInterval()一度開始すると実行し続けます。

Android はすでにバックグラウンド サービスをサポートしており、これを使用して長時間実行される継続的なタスクを実行できます。

上記の組み合わせで使用した1つのソリューション:

  • アプリの実行中は、setInterval()定期的に更新を確認するために使用します。
  • 更新チェックを開始する前に、アプリケーションが実行されているかどうかをバックグラウンドでチェックします
  • アプリが実行されていない場合は、バックグラウンド サービス コードを使用して、サーバーに更新があるかどうかを確認します。
  • 更新がある場合は、システムトレイ通知を配置して、ユーザーを待っている更新があることをユーザーに通知します
  • 彼がアプリケーションを起動するとすぐに、サービスを呼び出して更新を取得します。

このようにして、メイン ロジックは Javascript 側に残り、Javascript とネイティブの両方で同じロジックを再度記述する必要がなくなります。

更新があまり頻繁でない場合は、使用を検討する必要がありますPushNotification

于 2012-07-03T09:26:33.443 に答える