2

我正在使用具有offline mode. 为了做到这一点,我们将信息存储在本地SQLite数据库中,并使用Content Provider它为 SQLite 提供一个包装器,并sync每隔一段时间使用来自 Web 服务的数据。我们还将用户拍摄的图像保存在 sdcard 上,并在同步服务期间将它们发送到服务器。

问题是bandwidth和数据使用。在 Android 4.0+ 中,我们在设备设置中有一个名为Data usage. 它显示了太多的数据使用情况,这让用户很恼火。

我的第一个问题是:您认为使用ProGaurd这个缩减代码的工具对减少数据使用有什么影响吗?

如果您与我分享任何经验和建议以减少此类应用程序中的数据使用量,我将不胜感激。

附加物:

1 - 用户登录系统并在第一次同步从 REST 生成和传输的 sqlite 文件期间(初始化)。

2 - 我们有数据库中条目的同步状态标志。如果记录(使用 json 字符串作为数据)或图片未同步,它将在同步期间传输到 REST 并更新状态标志。

3 - 从 REST 接收更新的数据库文件,并在同步服务中与手机上的当前数据库合并(如果已经完成初始化)。

4

1 回答 1

2

ProGuard 与您从服务器发送/接收的数据量无关。ProGuard 可以缩小和混淆代码(从而使您的 APK 更小)。

您需要分析您发送和接收的数据。这里没有灵丹妙药可以神奇地解决您在应用程序中可能遇到的任何带宽问题。您需要问自己几个问题并根据您的答案采取行动:

我们在谈论什么样的数字? 2011 年,应用程序的平均带宽使用量约为每小时 10MB。如果您搜索一下,可能会有更多最近的调查。你远高于平均水平吗?如果没有,那么我认为您不必担心太多。

您多久发送和接收一次数据? 如果它是一个绝对需要实时数据的实时应用程序,那么您无能为力。如果它不是实时应用程序,也许您可​​以减少发送/接收的频率,或者在发送之前等待并收集更多数据以减少开销?如果您要发送许多小块数据,您将在 HTTP 标头等方面获得大量开销。将小块保留一段时间,然后一次性发送它们以更改数据与开销的比率。

你能改变协议吗? 也许您可以通过套接字而不是 HTTP 发送数据以减少开销?根据您的描述,这听起来不适用于您的情况。

您可以在发送之前压缩数据吗? 在将数据发送到客户端之前,请确保您的服务器 GZips 数据。这样做有很多好处。

您可以使用其他数据格式(二进制、json、xml、自定义)吗? 你提到你使用 JSON。JSON 通常/总是比 XML 执行得更好,所以你已经很好了,但也许你可以以另一种更紧凑的格式发送数据?

于 2013-06-18T14:41:58.707 回答