15

現在、Phonegap/Cordova (2.1.0/2.2.0)、JQ-Mobi (jQueryMobile ではない)、HTML5、Javascript、および CSS3 を使用して Android アプリを開発しています。アプリには 2 つのネイティブ拡張機能が含まれています。

どういうわけか、プロジェクトを最新の Android バージョンのデバイスにエクスポートすると、アプリの実行速度が 2.3.5 デバイスよりも大幅に遅くなります。

HardwareAcceleration を有効にしてみて、すべてのボックス シャドウやその他の css3 をレンダリングするのが難しいものを削除しました。まだ 4.1.1 または 4.0.4 では動作が不安定です。

また、Cordova の最新バージョン (現在は 2.2.0) にアップグレードしましたが、改善されていないようです。

アプリの起動時に Javascript DOM 操作が約 80 ~ 90% 発生します。

最悪のパフォーマンスは、パネルの切り替えとフォームのスクロールであり、それらのほとんどにはいくつかのトランジションがあります。Samsung Galaxy S2 android 2.3.5 でテストしたところ、問題なく動作します。同じデバイスですが、4.0.4 はうまく動作しません。Samsung Galaxy S3 4.1.1 の動作はさらに悪くなります。Android 3.2.1 を搭載した HTC Flyer P512 は、実行すべき方法で実行します。

誰か助けてくれませんか?このパフォーマンスを上げるにはどうすればよいですか?私が言及していないヒントやヒントはありますか?

Iphone 3gs 以上では問題が発生しないことを付け加えておき、これは間違いなく Android の問題であることを説明します。

4

4 に答える 4

2

私の phonegap アプリは iOS ではスムーズに動作しますが、Android では非常にパフォーマンスが低下します。私が理解しているように、これは Android が iOS よりも JavaScript の解釈がはるかに遅いためです。

大いに役立つことの 1 つは、jQuery や JQM などのライブラリーの使用を減らすことです。それらを含めたい場合は、必要のない場所では使用しないでください。

jQuery.animate などの関数は、Android では実行速度が非常に遅いことで有名であり、jQuery.each などを使用するよりも、生の JS を使用して配列を反復処理する方がよいでしょう。

問題はグラフィカルなレンダリングだけではなく、JavaScript の実行速度にもあります。ただし、画面の解像度を下げるとパフォーマンスが向上します。

編集

私は自分でこの問題の根底に到達しようとしていますが、私が得ることができる唯一の答えは、計算操作を最小限に抑えることです。

  • ライブラリを控えめに使用し、可能であれば未加工の適切に作成された JavaScript を使用して問題を解決します
  • 小さな DOM を保持し、できるだけ操作しないようにする
  • JavaScript のパフォーマンス向上テクニックを利用する

したがって、これは Phonegap レイヤーで解決できるものではなく、コア パフォーマンスの問題のようです。非科学的な例として、私のアプリの 1 つでまったく同じ init() 関数を実行すると、iPhone 4s では平均して約 1.2 秒で実行されますが、samsung galaxy s3 では完了までに 5 秒かかります。

于 2012-11-19T15:06:40.890 に答える
1

問題の核心は、個人的にはすべてが単一のページ (実行コンテキスト) でロードされ、実行されていることです。ただし、単一ページのアプリ (sencha、jqmobile など) は大流行していますが、最新のデバイスでのパフォーマンスはユーザー エクスペリエンスをまったく向上させません。正義。アプリをさまざまなページに分割します。これにより、DOM のサイズが大幅に縮小され、新しいページごとに個別の実行コンテキストが作成されます。つまり、メイン ページ (実行コンテキスト) は適切で無駄がありません (DOM は小さい)。

于 2012-11-22T01:47:49.023 に答える
1

私はまったく同じ問題を抱えていました。私は同様の質問をし、最終的にはここで大量の調査を行った後、自分で答えました。

Cordova/Phonegap は、新しいタブレットで Open Layers を使用するとパフォーマンスが低下しますが、新しい電話では問題ありません

私が提供した回答全体を繰り返すことはしませんが、特定の Android バージョンでのパフォーマンスの低下は、本質的に WebView のバグであり、GPU ベースのプロセスの CPU サポートを抑制しますが、それを補うために GPU サポートを提供しません。

Kitkat V4.4.3 以降ではこれが修正されていますが、一部のデバイスでまだ使用されている V4.4.2 などの古いバージョンはまだ影響を受けています。

これを回避するには、HTML レンダリングに WebView をまったく使用せず、代わりに Crosswalk を使用します。私たちのプロジェクトでは、これで問題が完全に解決され、対象とするすべての Android バージョンでアプリケーションがスムーズに実行されるようになりました。それも非常に簡単です。

https://crosswalk-project.org/documentation/cordova.html

https://blog.nraboy.com/2014/10/use-crosswalk-ionic-framework-android-apps/

于 2015-01-14T11:16:13.590 に答える
0

リソースを大量に使用する操作には、マルチスレッドとバックグラウンド処理を使用してみてください。

2.3.3 以降のバージョンで実行するとアプリがクラッシュしたときに、アプリの 1 つで同様の問題が発生したときに、それはうまくいきました。私は PhoneGap で作業したことがないので、どのように行うのかわかりません。

于 2012-11-18T09:39:44.883 に答える