Android 存储阵列列表<;对象>;作为JSON SharedReference或SQLite数据库表?
情景: 我正在从服务中的线程向web服务发送用户位置(对象位置,包含:lat、long和accurity字段)。如果由于各种问题(如没有网络)而失败,我需要存储它并尝试下次发送。如果多次失败,将存储多个位置对象 我有两个选择:Android 存储阵列列表<;对象>;作为JSON SharedReference或SQLite数据库表?,android,json,sqlite,sharedpreferences,Android,Json,Sqlite,Sharedpreferences,情景: 我正在从服务中的线程向web服务发送用户位置(对象位置,包含:lat、long和accurity字段)。如果由于各种问题(如没有网络)而失败,我需要存储它并尝试下次发送。如果多次失败,将存储多个位置对象 我有两个选择: 使用SQLite数据库和每个线程上打开的SQLiteOpenHelper,从表中检索记录,关闭。成功发送后,清除表内容 当location对象存储为ArrayList(如果有很多)并使用GSON解析为JSON时,请使用SharedReferences。需要时再次解析到Ar
我知道SharedReferences没有大小限制,根据我的条件,我可能有100行(这是夸张的,但可能)。我主要担心的是SQlite经常打开和关闭,事情可能会变得一团糟,最终强制关闭。SharedReferences不会影响任何事情,但我认为在保存/解析如此长的列表时可能会表现不佳。我知道SharedReference并不是针对这个,但我想听听你的意见 如果您担心sqlite为打开和关闭数据库引发异常,可以将值分别放入SharedReference中,然后使用
Map<String,?> keys = prefs.getAll();
for(Map.Entry<String,?> entry : keys.entrySet()){
Log.d("map values",entry.getKey() + ":
"+ entry.getValue().toString());
}
Map keys=prefs.getAll();
for(Map.Entry:keys.entrySet()){
Log.d(“映射值”,entry.getKey()+”:
“+entry.getValue().toString());
}
如果您担心sqlite为打开和关闭数据库引发异常,您可以将值分别放入SharedReference中,然后使用
Map<String,?> keys = prefs.getAll();
for(Map.Entry<String,?> entry : keys.entrySet()){
Log.d("map values",entry.getKey() + ":
"+ entry.getValue().toString());
}
Map keys=prefs.getAll();
for(Map.Entry:keys.entrySet()){
Log.d(“映射值”,entry.getKey()+”:
“+entry.getValue().toString());
}
这是一个有趣的方法。这是一个有趣的方法。