2010-08-13 83 views
0

我有一個ListActivity列出了一堆「東西」。如果你點擊其中一個「事物」,你就會被帶到另一個ListActivity中,其中列出了一些「東西」。小建築問題

說我想讓用戶能夠編輯一些「東西」的名稱;甚至刪除一些「東西」。我應該在什麼時候在我的數據庫上實際執行該操作?例如:如果一行「stuff」被刪除,那麼在將我的用戶返回到「things?」列表之前,應該更新數據庫嗎?或者用戶應該返回到「事物」列表,然後數據庫被更新?或者沒有關係?

請注意,數據庫更新可能會發生在服務中(我也將調用Web服務來更新雲)。

+2

用父母和孩子替換「東西」,這樣會更容易閱讀。 – jball 2010-08-13 18:18:57

回答

1

我會做數據庫事務用戶完成了它的混亂,只是因爲我想給他們一些方式來撤銷意外刪除之前提交到數據庫。

編輯:查看jball的回答。他比我更瞭解你。

+0

是的,當然,但這並不是我的建議。也許我應該更清楚一點:我應該在調用「finish()」之前更新數據庫,還是應該在父列表獲得結果後才能點擊數據庫。 – Andrew 2010-08-13 18:53:04

+0

我認爲這是正確的做法。數據庫不一致是不可避免的。什麼是適當的是最小化不必要的帶寬流量。 – Andrew 2010-09-17 15:49:51

1

這取決於您的應用程序中的重要內容。如果用戶從不認爲孩子在刪除失敗時被刪除很重要,那麼您應該等待從服務器獲得響應,然後再向用戶顯示新的孩子列表。

但是,如果刪除確認並不那麼重要,並且應用程序響應性至關重要,請更新用戶的顯示,然後在後臺異步執行刪除操作。

+0

+1 - 我認爲你的回答與安德魯的要求比我的要求更相關......儘管如此,我依然堅持我的觀點:) – iandisme 2010-08-13 18:22:32

0

您應該在提交操作後立即更新子活動。這樣你就不會有矛盾。在返回到父級時更新對子級活動的許多更改,而退出有風險,因爲如果網絡失去連接,則可能沒有完全提交所有更改。這可能會導致數據庫不一致。

+0

但是,數據庫不一致對於將數據同步到服務器的應用程序是不可避免的。從用戶執行操作的瞬間開始,數據庫不同步。如果用戶的手機處於關閉狀態並且他們正在使用網絡,則數據庫不會同步。重要的是提供正確同步的適當機制。如果呼叫失敗,應該有一些機制在晚些時候重試呼叫。 – Andrew 2010-09-17 15:51:31

+0

簡單的時間戳將有助於這種情況。讓所有記錄都有自己的時間戳。最新版本應覆蓋舊版本。那樣的話,我想通過簡單地比較文件時間戳就可以處理一段時間內不同步的設備。 – Shouvik 2010-09-18 04:37:26