我正在为Android上的应用程序实现客户端 - 服务器通信。在开始编码之前,我有一些高级问题。 如果问题变得含糊不清或令人困惑,请道歉。我对此非常陌生(我只有2天的Google版本),而且我没有编写任何代码,因为我要问这个设计问题。
背景:我们的Android应用会记录用户活动。例如,这些活动是用户书签文章。最终,我们希望将这些活动与服务器的数据库同步。但是,此同步不是时间关键的,这意味着每次有新活动时我们都不必将活动发送到服务器。
当前设计:每次有活动时,我们都会获取活动并将其放入Java对象中,标记为“notSync”,然后对数据库(SQLite)进行更新调用手机。每隔5分钟左右,我们调用数据库,将nonSync项目拉入对象数组,将其转换为JSON,然后将其发送到服务器。
问题1:将对象放入数据库似乎相当低效,然后每隔几分钟将其作为对象数组从数据库中拉出,然后转换为JSON。如果我们只是将所有活动附加到一个对象数组,然后直接从该数组转换为JSON并清除该数组,那么这将是一个更好的设计吗?我的困境是,如果我们实现后者,可能会有一个巨大的阵列浮动在手机的内存中。我们如何选择最佳实施方式?
问题2 当与服务器MySQL同步移动SQLite时,我们的设计(使用java将行拉出作为对象数组,然后将其转换为JSON)是一种合理的做法吗?
提前致谢!
答案 0 :(得分:0)
首先要记住的是瓶颈所在。根据我与MySQL服务器通信的经验,连接时间最长,然后上传/下载数据,然后是我在手机上做的任何事情。因此,即使不确切知道您将要录制什么内容,我认为使用SQLite和创建对象与网络活动相比不会产生太大的时间影响,这是一个安全的选择。
我会运行一些基本测试来测量各种操作需要多长时间,但要回答你的问题:
如果你正确地清理阵列,你不必担心它会变得太大,如果你的阵列变得那么大,你可能还有其他需要担心的事情(上传很多MB)数据的)。但是,如果您的用户执行了4分钟的操作,然后退出应用程序或其他内容,他们就会丢失数据。将其存储在数据库中更安全。
JSON似乎是发送数据的最佳方式,它非常有效,正如我上面所说的那样,我不知道SQLite /对象的创建时间也是如此大。