1

私はCordovaアプリを構築していますが、特定の条件下でアプリのパフォーマンスが低下するという事実を除いて、実質的に終了しています。この状態で、一連の非同期 ajax 呼び出し (応答が受信されるまでに約 15 秒) が行われます。これらの呼び出しは、ページが既に読み込まれて表示されたら行う必要があります。したがって、それらはランディング ページの onpageshow 関数で作成されます。問題は、通話が完了するまで Cordova スプラッシュ画面が表示されたままになることです。現時点での私の唯一の理論は、ネットワークが静かになるまで Cordova はスプラッシュ スクリーンを停止しないということです。Cordova にこれらのサーバー呼び出しを無視させる方法を知っている人はいますか? 電話してみたcordova.exec(null, null, "SplashScreen", "hide", [])デバイスの準備ができていますが、それでも消えないようには見えませんでした。関連する場合、このまったく同じサーバー呼び出しは、既にアプリ内にあるときに呼び出されたときに非同期で正常に実行され、ユーザーは賢明ではありません。この問題は、アプリのロードのみにあるようです。

ヘルプやアイデアをお寄せいただきありがとうございます。

4

2 に答える 2

0

非同期リクエストを起動する関数呼び出しに 1 秒のタイムアウトを設定することで、この問題を解決しました。これは解決策というよりも回避策であるため、これを答えとして受け入れるつもりはありません。この問題に取り組んだ私の時間から言えることは、Cordova がスプラッシュ スクリーンを削除する前に JavaScript がアイドル状態になるのを待っているように見えるということだけです。非同期呼び出しは、javascript が自然にアイドル状態になる前に行われた最後の呼び出しであったため、1 秒のタイムアウトを設定するとうまくいくように見えました。奇妙なことに、これは非同期呼び出しであるため、とにかく呼び出しの直後に JavaScript がアイドル状態になっているはずです。おそらく、Cordova もネットワークが静かになるのを待っているのでしょう。これは単なる憶測にすぎませんが、問題を解決する方法について将来の読者に何らかのアイデアを提供できることを願っています。

于 2012-08-30T15:15:12.683 に答える
0

「deviceready」イベントを取得する前に AJAX 呼び出しを行っている場合、Android のネイティブ側からの onPageFinished イベントが遅れている可能性があります。deviceready イベント ハンドラーに AJAX 呼び出しを入れてみてください。

于 2012-08-29T20:44:53.513 に答える