Android - SharedPreferences vs Cloud

时间:2015-03-17 19:03:02

标签: android sharedpreferences azure-mobile-services

这不是关于代码的问题。

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

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

我的问题是,我应该使用SharedPreferences尽可能多地工作,每当我调用服务器端插入,更新或删除某些东西时更新它们,或者我应该只使用SharedPreferences来保存个人数据,如用户名,日期出生,发电子邮件等,并呼叫服务器端从用户那里读取其他复杂数据?

4 个答案:

答案 0 :(得分:2)

当用户无法连接到云并获取数据时,您必须尝试处理这些情况。因此,您必须将其存储在设备上。此外,额外的互联网连接可以减少电池电量,因此您不必频繁访问云。

为了获得更好的性能,最好的选择是将所有这些数据保存到数据库中,但如果您的数据量不是很大,而且SharePreferences速度不会影响性能,则可以使用它来存储这些数据。

答案 1 :(得分:1)

  

是的,最好通过减少额外的网络来管理数据   呼叫。它不仅可以提高应用程序的性能,还可以提高性能   将照顾用户体验。

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

作为一个好的答案的附加组件,无论是在本地缓存/存储还是使用云数据库:如果SharedPreferences变得太小。

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

如果您想坚持使用SQL,可以使用Object-relational-mappingOrmLite来简化您的生活。