Android - SharedPreferences 与云

Android - SharedPreferences vs Cloud

这不是关于代码的问题。

我正在使用 Microsoft Azure 移动服务开发 Android 应用程序,但我对如何在客户端管理数据有一些疑问。

例如,我正在使用 Google 地图,我有一个包含几十个点(纬度和经度)的列表的片段,可以在地图上添加标记,但是如果我决定加载它每次我输入该片段时都会从 Azure 中获取点数,加载数据需要几秒钟时间,同样的情况也会发生在列表视图中转换的一些数据上。

我的问题是,我应该尽可能多地使用 SharedPreferences,在每次调用服务器端插入、更新或删除某些内容时更新它们,还是应该只使用 SharedPreferences 来保存个人数据,例如用户名,出生日期、邮箱等,调用服务器端读取用户其他复杂数据?

Yes, It is better to manage data by reducing additional network call. It will not only increase the performance of your app but also will take care of user experience.

根据数据的复杂性和数量以及更改的频率,您必须做出决定。如果所有更改都可以在单个网络调用中加载,那么您可以将这些数据存储到共享首选项中,并从应用程序管理本地更改,并在会话结束时将修改令牌发送到远程云服务器。它将提高您的应用程序的性能。

您实际上可以将此类数据保存在您的应用程序的 sqlite 数据库中,而不是不可靠的 SharedPreferences

当用户无法连接到云端并获取数据时,您必须尝试处理这些情况。所以你必须把它存储在本地,在设备上。此外,额外的互联网连接会减少电池电量,因此您必须减少访问云的频率。

为了更好的性能,最好的选择,就是把这些数据全部存入数据库,但是如果你的数据量不是很大,而且SharePreferences的速度不影响性能,你可以用它来存储这些数据。

作为在本地 cache/store 还是使用云数据库的好答案的补充:如果 SharedPreferences 变得太小。

如果您想避免相当复杂的 SQLite 数据库设置(table 设置、查询定义等),您可以使用 NoSQL 数据库,例如SnappyDB

如果你想坚持 SQL,你可以使用 Object-relational-mapping like OrmLite.

让你的生活更轻松