是否可以将sharedpreferences键与过期日期放在一起?
例如,如果我需要保存用户ID号,但我希望它在一天之后被“遗忘”......
今天我为此目的使用字符串的键:当我保存字符串时,我将键设置为“id_”,当我的应用程序启动时,我会查看所有我的首选项键(getAll())并寻求一个以“id_”开头的键,然后我解析尾随日期以确定我是否需要保留它。
有更好的方法吗?
答案 0 :(得分:2)
您可以存储两个首选项:一个用于值,另一个用于指定其过期。例如:
long expires = prefs.getLong("id_expiration", 0);
if(System.currentTimeMillis() < expires){
//still valid
String id = prefs.getString("id_value", "");
}
或者,如果您的偏好值始终具有已知格式,则可以连接值&amp;到期为一个字符串并存储它。例如:
String[] id = prefs.getString("id", "0:0").split(":");
if(id.length == 2 && System.currentTimeMillis() < Long.parseLong(id[1])){
//still valid
String id_value = id[0];
}
最后,您可以使用实现Serializable的对象,或者使用JSON,并将其写入字符串pref。
答案 1 :(得分:0)
AFAIK,没有直接的方式让Android为您清理您的偏好。但是,您可以做的是在您的偏好中包含您存储的日期。例如,如果要存储JSON对象,则可以存储:
{
value: 'xxx',
expiration: 'yyyy-dd-mm'
}
然后从首选项中检索对象后解析日期:
String json = prefs.getString(id);
try {
JSONObject obj = new JSONObject(json);
String date = obj.getString("expiration");
// Parse the date string and check to make sure it isn't expired.
} catch (JSONException e) {
// Handle exception
}