2012-07-12 98 views
6

我們正在開發一個煎茶觸摸2個應用,這使得使用PhoneGap的,才能夠安裝它作爲一個應用程序和訪問設備的存儲。這在iPad 2和iPad 3上運行得非常好。但是,當我們嘗試在Android設備上運行應用程序時,性能非常緩慢。減慢系統的主要因素是列表和傳送帶。當我們試圖通過Chrome瀏覽器測試相同的應用程序時,性能與iPad相當。煎茶觸摸2 - Android的性能

你對我們能做些什麼來改善Android上的表現,甚至拋棄的PhoneGap的一些東西,更好地工作的任何建議。或者,如果我們可以強制phonegap作爲Chrome瀏覽器運行。

感謝您的時間&幫助。

+0

請參閱。我也使用phonegap和sencha。但直到現在,我還沒有在性能方面遇到太多問題。可能是因爲一些本地功能如條形碼掃描等一切都很慢。但並不多。我會建議使用最新的corodova.jar文件。可能是1.8或1.9 – 2012-07-12 11:02:11

+0

我們實際上使用的是科爾多瓦版本1.9,但仍然表現不佳。我不得不提及,我們不是將其作爲MVC應用程序開發,因爲這是我們的第一個使用Sencha的項目,因此必須影響性能。許多人提到,問題的根源在於Phonegap工作的android的Web View,顯然它對於heave站點來說並不好。 – user1520547 2012-07-12 11:26:30

+0

但我使用的是MVC架構。所以UI部分,我使用Sencha Touch 2和本地部分使用phonegap。但直到現在表現明智,這是好事。 – 2012-07-12 11:35:26

回答

12

你有這裏的問題是,Android的瀏覽器不使用圖形硬件加速。這意味着Sencha(以及其他HTML5庫,如jQueryMobile,iScroll等)使用的標準技巧可以提供良好的滾動性能,例如CSS 3D轉換可以使您的列表呈現在單獨的圖層中,然後在硬件上進行翻譯,將無法在Android上運行。相反,列表滾動將完全由軟件執行,這將會很慢!

然而,Chrome瀏覽器卻提供了GPU加速功能。 Android設備不僅能夠提供良好的HTML5體驗,而且標準瀏覽器還沒有充分利用GPU硬件。

除非你能強迫你的最終用戶使用Chrome(我懷疑),唯一的選擇是降解的用戶體驗,併爲Android用戶提供一個稍微簡單的UI。

有關進一步詳情,請參閱"IMPROVING THE PERFORMANCE OF YOUR HTML5 APP"

+0

這就是問題的具體解釋,謝謝。不,因爲我們不能強制用戶使用chrome,因爲我們需要爲應用程序存儲超過5MB的數據,所以本地存儲不夠。我會看看你提供的鏈接,也許我們可以犧牲一些視覺吸引力來提高性能 – user1520547 2012-07-12 11:17:48

0

嘗試在AndroidManifest.xml中設置此標誌: 機器人:硬件加速=「真」

+0

已經嘗試過,但它似乎沒有工作,性能與選項設置爲false時的性能完全相同。也試圖將目標sdk設置爲15(4.0.3),但仍然無濟於事 – user1520547 2012-07-12 11:16:13

0

更新:現在已經有更多的ST2現在更長的工作表現Android上的挑戰只是你必須接受的。有很多事情可以做,以避免性能問題,如減少聽衆和事件,保持您的DOM燈(低於2000個節點),並通常避免任何CSS3轉換和效果(這些特別是在Android上表現不佳)

另一件需要考慮的事情不是使用內置的WebView,而是使用CrossWalk瀏覽器並將其嵌入到APK中。

https://crosswalk-project.org

它增加了一個小尺寸的APK(15-20MB),但它的性能比內置的WebView更好,帶來了穩定性和一致性,以一個非常分散的平臺。考慮一下這樣的現實:Android上的每個WebView取決於設備,供應商和操作系統版本可能在小方面有所不同。 CrossWalk將允許您在所有Android 4.0+設備上擁有完全相同的版本,並刪除任何設備或供應商特定的問題。

沒有銀彈在Android上的表現。圖形加速不會改進純JavaScript執行或DOM操作的執行。如果你想知道爲什麼,然後從這裏開始:

What's the difference between reflow and repaint?

年長的答案(可能仍然有效):

對於ICS及以上的web視圖以下設置將顯著提升渲染性能爲煎茶觸摸Android上:

mWebView.setLayerType(WebView.LAYER_TYPE_HARDWARE, null); 

但是以我的經驗,這將取決於設備和平臺VA引進的文物到CSS渲染riation。我沒有具體找到這個原因,我也不希望谷歌解決它,因爲webview組件將被Android 4.4中的更新和更好的版本取代。

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