我正在开发一个将用户输入存储在数据库中的应用程序,我想知道处理它的最佳方法。我希望在应用程序关闭以及应用程序更新时保留信息。共享首选项功能似乎不是一个好主意,因为数据更加复杂(例如具有多个级别的JSON文件)。仅将JSON数据作为.txt文件存储在内部存储中是否安全? (即不会丢失...我不担心安全性)。这是我要保存的JSON数据的示例:
{
"Altimeter": "3015",
"Cloud-List": [
[
"FEW",
"025"
],
[
"SCT",
"055"
],
[
"SCT",
"200"
],
[
"BKN",
"250"
]
],
"Dewpoint": "21",
"Flight-Rules": "VFR",
"Meta": {
"Cache-Timestamp": "Sun, 26 Aug 2018 16:07:47 GMT",
"Timestamp": "Sun, 26 Aug 2018 16:07:52 GMT"
},
"Other-List": [],
"Raw-Report": "KJFK 261551Z 20009KT 10SM FEW025 SCT055 SCT200 BKN250 26/21 A3015 RMK AO2 SLP210 T02560206",
"Remarks": "RMK AO2 SLP210 T02560206",
"Remarks-Info": {
"Dew-Decimal": "20.6",
"Temp-Decimal": "25.6"
},
"Runway-Vis-List": [],
"Station": "KJFK",
"Temperature": "26",
"Time": "261551Z",
"Units": {
"Altimeter": "inHg",
"Altitude": "ft",
"Temperature": "C",
"Visibility": "sm",
"Wind-Speed": "kt"
},
"Visibility": "10",
"Wind-Direction": "200",
"Wind-Gust": "",
"Wind-Speed": "09",
"Wind-Variable-Dir": []
}
答案 0 :(得分:0)
保存在文本文件中是保存数据的好方法。当您注意文件目的地时,数据不会丢失。例如,它不应放置在任何临时文件夹中。
另一种方法是使用数据库存储数据。那是正常的做法。
您具有以下选择: 1. SharedPreferences 2.文字档 3.数据库
您可以通过快速Google搜索找到的所有3种方法的教程。
很棒的编码!
答案 1 :(得分:0)
最好将SharedPreferences中的数据另存为JsonString,并在检索数据时使用Gson库将json转换为其原始对象(序列化和反序列化),如下所示:
String json = new Gson().toJson(yourNeededObject);
SharedPreferences shp = PreferenceManager.getDefaultSharedPreferences(context);
shp.edit().putString(key, json).apply();
并反序列化:
String json = shp.getString(key);
YourObject obj = new Gson().fromJson(json, YourObject.class);
答案 2 :(得分:0)
由于您对避免丢失此应用程序数据的安全性感兴趣,因此请考虑远程位置,即设备附近的位置。如今,任何云存储都将为您提供这种安全性。