我正在开发一个Android应用程序作为云Web服务的客户端。在登录屏幕中,我下载了大量数据作为JSON,如联系人列表和文件夹列表(仅限名称和某些功能,而不是包含的文件)。在对这个JSON进行反序列化之后,我将联系人列表和文件夹列表存储在.application文件中的两个静态公共列表元素中,但是当应用程序进入时,在某些手机中(如galaxy S3和Galaxy Note 2)后台,他们保存活动但不保存这些数据列表,所以如果用户有时候从后台回来,他发现应用程序的联系人列表为空或者有空指针异常,因为有些人会删除此列表。为什么?是否有可能以其他方式保存它们?数据很复杂,因为联系人列表对象很复杂并且创建一个daabase是很多工作。另一个选项可以是共享首选项,用于存储联系人列表的序列化json,但最多可以为2MB json。
答案 0 :(得分:1)
这对您来说是一个很好的解决方案: http://www.couchbase.com/communities/couchbase-lite
答案 1 :(得分:1)
答案 2 :(得分:0)
我认为静态变量几乎是第一个为内存目的而被垃圾收集的东西,所以这就是你丢失这些数据的原因。 在onResume方法中,检查列表是否为null,如果它再次启动下载任务。
答案 3 :(得分:0)
如果将来自云的数据存储到数据库,则必须先使用可以安全存储所有数据的事务,然后再执行其他任务。
请访问以下链接观看:
http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#beginTransaction%28%29
答案 4 :(得分:0)
我通常使用一种非常好的内容提供程序方法,该方法基于一个名为Data Droid(http://www.datadroidlib.com/)的小项目。这种模式非常好,可以重复使用!