2012-07-12 7 views
6

私たちは、Phonegapをアプリケーションとしてインストールし、デバイスのストレージにアクセスできるSencha Touch 2アプリケーションを開発しています。これはiPad 2とiPad 3でうまくいきます。ただし、Android搭載端末でアプリケーションを実行しようとすると、パフォーマンスが非常に遅くなりました。システムを遅くする主な要素は、リストとカルーセルでした。クロームブラウザで同じアプリケーションをテストしようとしたとき、パフォーマンスはiPadのものと同じレベルでした。Sencha Touch 2 - Androidの性能

私たちがアンドロイドのパフォーマンスを向上させるために何ができるか、またもっとうまくいくもののためにPhonegapを捨てるための提案がありますか?または、電話帳をChromeブラウザとして実行できるようにすることができますか。

ありがとうございました&助けてください。

+0

を参照してください。私はphonegapとsenchaも使用しています。しかし、今まで私はパフォーマンス面で大きな問題に直面していませんでした。バーコードスキャンなどのネイティブ機能ではほとんど遅くないかもしれません。しかしそれほど多くはありません。最新のcorodova.jarファイルの使用を提案します。 1.8または1.9になる可能性があります –

+0

実際には、バージョン1.9のCordovaを使用していますが、パフォーマンスは良くありません。私たちがMVCアプリケーションとして開発しているわけではないことは言及しなければなりません。これはSenchaを使用した最初のプロジェクトであり、パフォーマンスにも影響を及ぼさなければならないからです。多くの人々は、問題の根源はPhonegapが動作するアンドロイドのウェブビューであると言いますが、明らかにヒーブサイトには適していません。 – user1520547

+0

しかし、私はMVCアーキテクチャを使用しています。だからUI部分、私はSencha Touch 2とネイティブ部分phonegapを使用して作成しています。しかし、今はパフォーマンスが賢明になるまでそれは良いです。 –

答えて

12

ここで問題になっているのは、Androidブラウザがグラフィックスハードウェアアクセラレーションを使用していないことです。これは、Sencha(およびjQueryMobile、iScrollなどの他のHTML5ライブラリなど)が、CSS 3D変換などの優れたスクロールパフォーマンスを提供するために使用する標準的な手法が、リストを別のレイヤーにレンダリングさせることを意味します。ハードウェアで翻訳され、Androidでは動作しません。代わりに、リストのスクロールは完全にソフトウェアで実行されますが、これは遅くなるでしょう!

Chromeブラウザは、GPUアクセラレーションを提供します。 Androidデバイスは優れたHTML5エクスペリエンスを提供できるだけでなく、標準ブラウザではまだGPUハードウェアを利用していないということです。

エンドユーザーにChromeの使用を強制することができない限り(疑わしい)、唯一の選択肢は、ユーザーエクスペリエンスを低下させ、Androidユーザー向けに少し簡単なUIを提供することです。詳細については

、あなたのAndroidManifest.xmlでこのフラグを設定してみてください"IMPROVING THE PERFORMANCE OF YOUR HTML5 APP"

+0

これは問題の正確な説明です。ありがとうございます。いいえ、アプリケーションに5MBを超えるデータを格納する必要があるため、ユーザーにクロムの使用を強制できないため、ローカルストレージでは不十分です。あなたが提供したリンクを見てみましょう。パフォーマンスを向上させるためにビジュアルアピールを少しでも犠牲にすることができます。 – user1520547

0

を参照してください。 アンドロイド:hardwareAccelerated = "true" の

+0

すでに試してみましたが動作していないようですが、オプションがfalseに設定されたときのパフォーマンスはまったく同じです。また、ターゲットのsdkを15(4.0.3)に設定しようとしましたが、まだ役に立たない – user1520547

0

更新:は今、今より長く、よりST2でパフォーマンスを働きましたAndroidの課題は、あなたが受け入れなければならないものです。リスナーやイベントを減らしたり、DOMの光を2000ノード以下に抑えたり、一般的にはCSS3の変換や効果を避けるなど、パフォーマンス上の問題を避けるためにできることはたくさんあります(特にAndroidではうまく機能しません)

別のこととして、WebViewを使用してCrossWalkブラウザを使用し、これをAPKに組み込むことができます。

https://crosswalk-project.org

それはあなたのAPK(15〜20メガバイト)に少しサイズが追加されますが、それはWebViewの中に組み込まれてより優れた性能と非常に断片化されたプラットフォームに安定性と一貫性をもたらします。デバイス、ベンダー、OSのバージョンに応じてAndroid上のすべてのWebViewが少しずつ違うかもしれないという現実を考えてみましょう。 CrossWalkを使用すると、すべてのAndroid 4.0以降のデバイスでまったく同じバージョンを使用でき、デバイスやベンダー固有の問題をすべて削除できます。

Androidでのパフォーマンスのための銀色の弾丸はありません。グラフィックアクセラレーションは、純粋なJavaScriptの実行やDOM操作のパフォーマンスを向上させません。あなたは理由を理解したい場合は、ここで起動します。

What's the difference between reflow and repaint?

古い回答(まだ有効かもしれない):

ICSの場合

とWebViewの上の次の設定上のパフォーマンスを大幅にレンダリング向上しますAndroid上煎茶タッチのために:私の経験ではしかし

mWebView.setLayerType(WebView.LAYER_TYPE_HARDWARE, null); 

これは、デバイスやプラットフォームVAに応じて、CSSのレンダリングに成果物を紹介します暴力。私は特にこれの理由を見つけていないし、webviewコンポーネントがAndroid 4.4でより新しい、より良いバージョンに置き換えられるようにGoogleが解決するとは思わない。

https://developers.google.com/chrome/mobile/docs/webview/overview