我正在使用offline mode
的应用程序。为了做到这一点,我们将信息存储在本地SQLite
数据库中,并使用Content Provider
提供围绕SQLite的包装器,并sync
每隔一段时间使用来自网络服务。
我们还保留用户在SD卡上拍摄的图像,并在同步服务期间将它们发送到服务器。
问题是bandwidth
和数据使用情况。在Android 4.0及更高版本中,我们在设备设置中有一个名为Data usage
的部分。它显示了太多的数据使用量并且使用户感到烦恼。
我的第一个问题是:您认为使用ProGaurd缩小代码的工具会对减少数据使用产生影响吗?
如果您与我分享任何经验和建议,以减少此类应用中的数据使用情况,我将不胜感激。
附录:
1 - 用户登录系统以及从REST(初始化)生成和传输的第一个同步sqlite文件。
2 - 我们在数据库中有条目的sync-status标志。如果记录(使用数据的json字符串)或图片未同步,它将在同步期间传输到REST并且状态标志得到更新。
3 - 从REST接收更新的数据库文件,并在同步服务中与手机上的当前数据库合并(如果已完成初始化)。
答案 0 :(得分:2)
ProGuard与您从服务器发送/接收的数据量无关。 ProGuard可以缩小和混淆代码(从而使您的APK更小)。
您需要分析发送和接收的数据。这里没有灵丹妙药可以神奇地解决您在应用中遇到的任何带宽问题。您需要问自己几个问题,并根据您的答案采取行动:
我们在谈论什么样的数字? In 2011 the average bandwidth use of an app was around 10MB per hour。如果你搜索一下,可能会有更多最近的调查。你远远高于平均数吗?如果没有,那么我认为你不必太担心。
您多久发送和接收一次数据? 如果它是一个绝对需要实时数据的实时应用程序,那么你几乎无能为力。如果它不是实时应用程序,您可以减少发送/接收的频率或等待并在发送之前收集更多数据以减少开销?如果您要发送许多小块数据,您将在HTTP标头中获得大量开销,依此类推。再坚持一小段时间,然后一次性发送它们以将数据更改为开销比率。
您可以更改协议吗? 也许您可以通过套接字而不是HTTP发送数据以减少开销?根据你的描述,这听起来并不适用于你的情况。
您可以在发送之前压缩数据吗? Make sure that your server GZips data before sending it to the client。通过这样做可以获得很多。
您可以使用其他数据格式(二进制,json,xml,自定义)吗? 你提到你使用JSON。 JSON通常/总是比XML更好,所以你已经很好了,但也许你可以用另一种更紧凑的格式发送数据?