我有两个表SyncedComments
和QueuedComments
,后者保存本地注释,直到它们与网络服务器同步,当它们成功同步时,它们会被放入同步表中,我的应用程序应该是对每种类型都无动于衷。我通过CursorLoader加载注释,并在用户读取它们时将它们移动到同步表。假设用户也可以在移动时编辑注释,因此应用程序应该知道注释的位置,而不管它的表是什么。
为了支持这一点,我想到了一个包含3列的表,local_id,synced_id和queued_id,local_id是持久的,只是作为对其他两个id之一的引用。创建注释时,会插入一个新行,其sync_id设置为NULL,并且已经给出了队列ID,当移动注释时,queue_id设置为NULL并设置sync_id。这样我的应用程序只需要始终引用本地ID。
这个解决方案看起来如何?有什么缺点吗?可以更聪明地完成吗?
答案 0 :(得分:1)
我首先将所有注释放在 one 表中,并带有关于注释是否同步的标志(实际上它可能是服务器上的ID,在同步之前设置为NULL并且值之后从服务器获得)。这将把你带到1个表而不是3个,更容易显示所有注释(因为你不需要做联合),最重要的是避免在显示时同步注释时的问题,因为注释不会随处移动。它对数据库文件的写入次数较少,因此可以减少碎片次数,减少对闪存设备的写入次数。