2013-03-06 45 views
1

我是Android開發的新手,已經編寫了一個小應用程序,調用Web服務並保存相對簡單的對象(想想:拍賣列表或某種程度的)。現在,當電話旋轉並重新加載視圖時,Web服務被重新調用,對象被重新潤溼並重新顯示列表。這看起來非常浪費。通過onSaveInstanceState存儲數據時的最佳做法是什麼?存儲對象本身是否被認爲是可以的,或者最好的做法是存儲ID,並且每次都要經歷新加載的整個過程。這裏有沒有其他的經驗法則或難題?Android - 我是否應該通過saveinstancestate保存我的對象或其ID?

謝謝

JP

回答

2

即使從數據庫重新創建信息通常也被認爲是Android配置更改場景的過多努力。

你想要使用的是創建一個持有對象的引用的類,你想要在配置更改中生存下來,並讓你的Activity有一個引用。另外,您將在onRetainNonConfigurationInstance()回調中返回。在onCreate()中,您致電getLastNonConfigurationInstance()以查看由於配置更改是否這是重新創建。此調用將返回您的對象與您需要的所有數據。

1

既然你調用一個Web服務來填充你的清單,我想你應該存儲列表的數據(調用Web服務消耗的時間和可能會失敗,如果用戶沒有按沒有穩定的連接)。你可以用不同的方式來做(例如數據庫)。如果用戶重新啓動應用程序,這種方法也可以幫助你,因爲他不必等到網絡服務響應。

另請參見:當您提出問題時重新考慮您的術語。你通常不會看到有人在談論物體的「水合」談及人口等問題更爲常見。

+0

這實際上取決於是否所有數據都必須永久保留。如果是,那麼我同意你的意見;如果沒有,你建議的方法不是最好的Android實踐。我會假設@JP提到的拍賣名單有些臨時性。 – 2013-03-06 15:44:48

+0

@ClassStacker你是對的。它取決於所涉及的變量以及數據的持續性。 – DigCamara 2013-03-06 15:46:57

+0

我20年來一直是開發人員,不會很快改變我的術語。你會發現水合是常用的,特別是在ORM世界。鑑於填充和水合是任意的術語,我不認爲這個問題... – 2013-03-10 18:42:03

0

儘可能多地緩存數據,每個數據連接在時間,資源和最終電池壽命方面都具有「標準」成本。

嘗試對您的請求進行分組,並將其全部置於一次,並儘可能緩存響應。

Good read about network on android developers

0

如果你只是想避免召回服務時方向的變化,那麼你可以在下面的清單中的活動添加標籤。

機器人:configChanges =「導航|方向| keyboardHidden」

但作爲@DigCamara說,他的做法是最好的,其他場景,如重新啓動,甚至是有用的。

相關問題