【发布时间】:2017-02-13 20:30:12
【问题描述】:
我正在开发一个应用程序,该应用程序(其部分功能)从服务器获取大量 JSON 格式的项目列表,并将其存储在本地 SQLite 数据库中。由于 JSON 文件很大,我使用 Gson 库来执行提取,否则应用程序会因为内存不足而崩溃。因此,我唯一的选择是将文件作为流获取。
JSON 文件结构类似这样:
{
"items": [
{
"itemID": "id1",
"itemName": "name1"
},
{
"itemID": "id2",
"itemName": "name2"
}
]
}
我处理流的 Java 代码如下所示:
JsonReader reader = new JsonReader(url_buffered_reader);
reader.beginObject();
String itemId = null;
String itemName = null;
while (reader.hasNext()) {
if (reader.nextName().equals("items")) {
reader.beginArray();
while (reader.hasNext()) {
reader.beginObject();
while (reader.hasNext()) {
String name = reader.nextName();
switch (name) {
case "itemID":
itemId = reader.nextString().trim();
break;
case "itemName":
itemName = reader.nextString().trim();
break;
default:
reader.skipValue();
break;
}
}
reader.endObject();
storeItemData(itemId, itemName);
}
reader.endArray();
}
}
函数storeItemData(String id, String name) 看起来像这样(它在一个扩展SQLiteOpenHelper 的类中):
public void storeItemData(String id, String name) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("itemID", id);
values.put("itemName", name);
long newRowId = db.insertWithOnConflict(
"items",
null,
values, SQLiteDatabase.CONFLICT_REPLACE);
}
代码运行良好。数据已成功下载并存储。问题是性能不好。有没有更高效的方式来存储数据,从而提升性能?
【问题讨论】:
标签: java android json performance sqlite