2012-12-01 50 views
9

我在Android 3.2上開發並測試了一個應用程序,它與SQLite數據庫交互並在屏幕上顯示結果。我沒有動畫或任何幻想。我所做的是有很多ListView向用戶顯示數據。我的應用程序在Android 4.0上顯着較慢

該應用程序的數據庫非常大,有些表格的行數超過300k。我們試圖在與數據庫的每次交互中使用AsyncTask,但是還有一些要點我們仍然需要優化性能。

問題是,該公司更新了一些平板冰淇淋三明治,該應用程序比它在蜂窩上慢得多。我在兩個設備中加載了相同的代碼,使用相同的數據庫,一個運行ICS,另一個使用Honeycomb。該應用在3.2設備中表現更好。我也嘗試使用<uses-sdk android:minSdkVersion="14" />,但它並沒有做得更好。

有什麼我可以做的,以優化4.0的性能?我也很想知道爲什麼會發生這種情況,以及是否有任何可能導致這種情況的東西(某些組件或類在4.0上不能很好地工作)。

謝謝!

更新:我找到了我的應用程序主屏幕的解決方案。我提交了一個水平清單的片段,它是一個加載了大量數據列表的HorizontalScrollView,並創建了很多要在ScrollView中呈現的LinearLayout。我發現了一個HorizontalListView的小部件,並使用它來加載我的列表。只是讓應用程序更快。但是我沒有找到ICS上爲什麼會比較慢的答案。

我也嘗試分析應用程序,但這是一件非常困難的事情,有很多信息。我可能會在接下來的幾周內這樣做,以加快應用程序的速度。感謝您提供的所有答案和評論!

+0

您是否在兩臺設備上都使用DDMS工具檢查堆大小? – Talha

+3

在得出結論之前,您應該在兩臺設備上[配置您的應用](http://developer.android.com/tools/debugging/debugging-tracing.html),看看瓶頸在哪裏。 – Felix

+1

我問過它,因爲我以前遇到同樣的問題。因此,dalvik vm堆大小設置在每個android版本/設備上的/system/build.prop首選項文件中。確切的首選項是dalvik.vm.heapsize。值以兆字節爲單位,取決於設備功能。因此,您的應用在不同設備上的行爲可能會有所不同。 – Talha

回答

相關問題