【问题标题】:Best practice to client-server communication on Android, when and howAndroid上客户端-服务器通信的最佳实践,何时以及如何
【发布时间】:2014-03-17 22:21:01
【问题描述】:

我正在为 android 上的应用程序实现客户端-服务器通信。在开始编码之前,我有一些高级别的问题。 如果问题变得模糊或令人困惑,请道歉。我对此真的很陌生(我只有 2 天的 Google-ing),而且我没有编写任何代码,因为我要问的是这个设计问题。

背景:我们的安卓应用记录用户活动。例如,这些活动是用户为文章添加书签。最终我们希望将这些活动与服务器的数据库同步。然而,这种同步不是时间关键的,这意味着我们不必在每次有新活动时都将活动发送到服务器。

当前设计: 每次有活动时,我们获取活动并将其放入 Java 对象中,标记为“notSync”,然后对数据库(SQLite)进行更新调用手机。我们每隔 5 分钟左右调用一次数据库,将非同步项拉入一个对象数组,将其转换为 JSON,然后发送到服务器。

问题 1: 将一个对象放入数据库,然后每隔几分钟将其作为对象数组从数据库中取出,然后转换为 JSON 似乎效率很低。如果我们只是将所有活动附加到一个对象数组,然后直接从该数组转换为 JSON 并清除该数组,那会是一个更好的设计吗?我的困境是,如果我们实现后者,手机内存中可能会有一个巨大的数组浮动。我们如何选择最适合实施的方法?

问题 2 在将移动 SQLite 与服务器 MySQL 同步时,我们的设计(使用 java 将行作为对象数组拉出,然后将其转换为 JSON)是合理的做法吗?

提前致谢!

【问题讨论】:

    标签: android json performance sqlite client-server


    【解决方案1】:

    首先要记住瓶颈的真正位置。根据我与 MySQL 服务器通信的经验,连接时间最长,其次是上传/下载数据,然后是我在手机上所做的任何事情。因此,即使不知道您将要录制的确切内容,我认为使用 SQLite 和创建对象不会对您的网络活动产生很大的时间影响。

    我会运行一些基本测试来衡量各种操作需要多长时间,但要回答您的问题:

    1. 如果您正确清除阵列,您不必担心它会变得太大,而且如果您的阵列确实变得那么大,您可能还有其他事情需要担心(上传许多 MB 的数据)。但是,如果您的用户执行某项操作 4 分钟,然后退出应用程序或其他操作,他们将丢失数据。将其存储在数据库中更安全。

    2. JSON 似乎是发送数据的最佳方式,它非常有效,而且正如我上面所说,我认为 SQLite/对象创建时间不会太长。

    【讨论】:

    • 这些是一些有用的见解。谢谢。
    猜你喜欢
    • 2013-08-20
    • 1970-01-01
    • 2020-11-11
    • 2020-08-15
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    相关资源
    最近更新 更多