2011-03-22 70 views
0

我有12個spinners的工作活動鏈接到超過20,000條記錄的單個數據庫表。每個微調控制器綁定到不同的查詢以使選擇動態化(基於之前的選擇)。該代碼可以工作,但由於數據庫中查詢的數量和表的大小,我的性能非常糟糕。初始佈局需要20多秒才能加載。這是因爲第一個微調器在佈局期間被設置爲初始選擇,導致其他11個微調器也填充。使用旋轉器時性能也受到影響。如果我去改變第一個選擇,所有其他微調器都需要大約10秒鐘來更新。提高微調器性能

我應該從哪裏開始尋找更好的性能?數據庫表?查詢?或者我應該避免使用12個紡紗廠?

回答

0

隨着您應該可能考慮去鑽下拉列表中,許多選項。這將允許您分解查詢(每個活動一個),並且還將允許當前列表佔用整個屏幕。這樣,您還可以爲用戶提供一種過濾當前列表的方法,如果您有很多選項,則該列表可能是必需的。

另外:

  • 設置你的佈局,然後再開始加載數據。至少在用戶等待時出現這種情況。
  • 做在的AsyncTask /線程所有長時間運行的工作,以避免阻塞UI線程
  • 確保你有你的數據庫表和查詢​​主索引使用這些在可能的情況
  • 不要一次加載所有數據,只需執行每個查詢根據需要
+0

我想標記兩個答案是正確的,因爲我使用兩個想法。我確實找到了一種更有效的索引列的方法,這有助於我在佈局上啓用所有的spinners。謝謝! – Eric 2011-03-24 19:36:04

1

這聽起來像你不拖延UI線程,所以這很好。 您可以創建索引來加速數據庫,但是您可能會通過分割查詢而不是一次完成所有查詢來獲得最大的性能提升。因此,第一個Spinner將是Activity啓動時唯一啓用的控件。進行選擇將激發第二個微調器的查詢並啓用該選項,依此類推。

有這個(1小時)視頻了很多有用的東西表現: http://www.google.com/events/io/2010/sessions/writing-zippy-android-apps.html