一个月后如何自动删除SharedPreferences?

时间:2019-01-04 17:04:58

标签: android android-studio

我想在一个月后自动删除SharedPreferences(如果存在)。我找不到任何解决方案。这有可能吗?

非常感谢。

3 个答案:

答案 0 :(得分:0)

long installed = context
    .getPackageManager()
    .getPackageInfo(context.getPackag‌​eName(), 0)
    .firstInstallTime
;

public long firstInstallTime 首次安装该应用程序的时间。单位按照System.currentTimeMillis().

现在,您可以使用GregorianCalendar比较两个日期并获得不同的月份 一个月后,您可以根据自己的意愿做..清除sharedPrefrence.edit().clear().commit()

答案 1 :(得分:0)

要视情况而定。

最简单的方法是在用户启动应用程序时将其删除。 创建应用程序后,您将检查SharedPreferences的最新更新时间。 如果为空(第一次),则将当前时间(以毫秒为单位)保存为很长的时间。 如果不为空,则将其读取并将其与当前时间进行比较。如果不到一个月,您什么也不做。如果超过一个月,则清除共享的首选项,并在清除共享首选项后插入新时间。

类似的东西:

long lastUpdate = sharedPreferences.getLong(LAST_UPDATE, -1);
if(lastUpdate == -1) {
//First time
sharedPreferences.edit().putLong(LAST_UPDATE, System.currentTimeMillis()).apply();
} else {
boolean isMoreThanAMonth = //Here you should do the math. it depends, you want to consider a month like 30 days, or you want to know if it was in another month... somehthing like that
if(isMoreThanAMonth) {
sharedPreferences.edit().clear().apply()
}
}

当然,如果即使用户未打开应用程序也要清除SharedPreferences,则应使用服务。对于操作系统而言,它更为复杂且昂贵,因此,如果需要,您应该尝试第一个。

答案 2 :(得分:0)

一种可能的方法,
1.获取日历实例。
2.获得最大月份数。
3.以dd / mm / yyyy格式存储在var1字符串中。
4.从某个日历对象获取当前日期,并以与第3点相同的方式存储在var2中。
5.比较两个字符串。
6.如果匹配,那么它将是该月的最后一天,并在文件上调用delete()。
完成。