web-dev-qa-db-ja.com

なぜネイティブアプリのデータをPhoneGapで取得するよりも速く取得するのですか?

PhoneGapではコード全体を実行時にネイティブアプリに解釈する必要があるため、PhoneGapで開発されたアプリはネイティブアプリよりも遅いことを知っています。

しかし、誰かがネイティブアプリがPhoneGapを備えたアプリよりも高速にWebリソースからデータ(画像またはテキスト)を取得する理由を説明する優れた詳細なWebサイトを誰かが説明したり、持っている可能性はありますか?両方のアプリがインターネット接続を別の方法で処理しますか、それともPhoneGapアプリによって取得されるデータが増えますか?

3
John Brunner

まったく異なるアプリケーションイベントプロセスです。

PhoneGapは、複数のデバイスで汎用的になるように設計されたJavaScriptイベントコールバックを使用しますが、Androidは、OSにネイティブのアクティビティベースです。 iOSには同じようなものがありますが、コメントはできません。

Androidは、アプリケーションが読み込まれたときに開始するアクティビティを認識しており、そのアクティビティの実行は、大規模なアプリケーションでも比較的迅速に行われます。一方、PhoneGapは読み込みを完了するためにHTML5ブラウザーを必要とし、すべてのHTML5 JavaScriptファイルをデバイスから読み込み、すべてのコードを初期化するためにJavaScriptを少なくとも1回実行する必要があります。その結果、PhoneGapアプリケーションの起動に目に見える遅延が生じます。これが、アプリのロード中にPhoneGapにスプラッシュスクリーン機能が含まれている理由です。

PhoneGapアプリケーションが起動すると、ユーザーインターフェイス全体がレンダリングされたHTMLページになり、それが搭載されているデバイスに関連するパフォーマンスの問題の影響を受けます。一方、ネイティブAndroidアプリケーションは、多くの場合、OSを使用してアクティビティビューをレンダリングします。したがって、OSの速度の向上は、より高速なアプリにつながります。ブラウザによってレンダリングされるHTMLは、プロセッサとGPUの速度に制限されます。

パフォーマンスは同じである必要があります

  • アプリケーションは、ローカルストレージ、キャッシュ、SQLを利用できます。
  • Webサーバーとの通信はAJAX(JSON、XMLまたはHTML)を介して行われます。

パフォーマンスは異なるはずです

  • JavaScriptは、大規模な計算を実行するために使用されます。
  • ユーザーインターフェイスには、大きなデータソースのデータが表示されます。
  • ローカルストレージへの読み取り/書き込み操作が大量にある(つまり、カメラ画像)
  • アニメーションや大きなグラフィックを含むすべての視覚要素は、ネイティブで高速に実行されます。

ハイブリッドPhoneGab

PhoneGapの開発者がパフォーマンスについて不満を言う正当な理由はありません。 PhoneGapを使用すると、ネイティブで実行される各デバイスのコードを開発でき、PhoneGapへのプラグインを介して実行できます。ネイティブプラグインは、JavaScript拡張機能としてPhoneGapアプリに公開されます。パフォーマンスが問題になるときはいつでも、開発者はそのコードをネイティブプラグインに移動することができます。

JavaScriptはネイティブコードよりも低速ですが。それがとても遅くなるコードは何をしているのですか?おそらくそれは悪いJavaScriptであり、それからPhoneGapの設計の誤りです。

なぜPhoneGabなのか?

PhoneGabはAndroid開発ではありません。これはHTML5であり、個人的にはAndroid SDKを使用すると、同じものをHTMLに実装するよりも速く結果を得ることができます。 HTML/Javascriptに強いスキルを持っている人は、非常に具体的なユーザーインターフェイスを期待しており、OSを課す標準のアイデアに反抗していると思います。

4
Reactgular