2013-07-05 25 views
0

我有一個android應用程序,在我的一個活動中,我打電話來說「客戶」,這個調用是對外部API進行的,當我得到我得到的響應時它作爲一個JSON對象。我遇到的問題是我在活動中有一個ListView,當你點擊它的項目時它會顯示你的細節,但是當你點擊後退按鈕時,我必須再次進行調用才能填充它。在三星Galaxy 4S,它似乎保持列表視圖的數據,但在HTC機器人令人難以置信,它是空白。所以我做的是,使它重新綁定OnResume(),這解決了這兩個問題,但結果是再次調用該服務器。當它的10個或100個客戶沒有關係,但我知道有一些賬戶有5000個,我相信它會崩潰。獲取數據並保存它的最佳做法

我可以通過什麼方式提高Android的性能?我嘗試了一個靜態變量,但是在某些時候對象也被清除了。

Android應用程序通常如何處理這種情況,其中數據是從API中檢索的,並且需要將其存儲在整個應用程序中,並且不需要對同一信息進行另一次調用?我在考慮使用靜態對象但我想確保我以正確的方式做到這一點。

+0

看看[這篇文章](http://developer.android.com/guide/topics/data/data-storage.html)。它是專門爲這個問題而設計的;-) – jahroy

回答

1

您有幾個選項。

1)您可以將數據緩存在內存中。例如,您可以創建靜態緩存或緩存Activity或App對象中的數據。如果你只在一個視圖中做這件事,並且如果它不是很多數據,這可能是一個好的解決方案。但是,如果您必須爲許多活動執行此操作,並且需要緩存大量數據,則可能需要執行選項2.在android中將數據存儲在內存中並不意味着它不會被垃圾回收收集(在某些情況下,即使您有參考)。

2)您可以將數據緩存在內部存儲器中並隨時刷新。 你可以在這裏找到更多關於內部存儲器的信息以及如何使用它:http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

基本上,你將響應存儲在內部存儲器的特定標識符下。下次您打開活動時,您會檢查存儲是否具有該標識符的數據,如果是,則讀取並顯示它。如果不是,則進行API調用。請注意,您將不得不不時更新緩存。

0

我的應用程序也有ListViews的問題。我所做的是我寫了一個自定義適配器,並解決了這個問題。

但是,你可以做的事情是做一個全局變量並將返回的結果保存到它。當你的應用程序想要調用服務器時,檢查變量,如果它是空的撥打電話,如果它不是那麼只是繪製ListView與已獲取的數據。

請記住,要實現刷新按鈕,你需要跳過檢查。

相關問題