2010-08-13 56 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