Je souhaite supprimer les SharedPreferences, si elles existent, automatiquement après un mois. Je n'ai trouvé aucune solution. Est-ce possible de faire?
Merci beaucoup.
3 Réponses :
long installed = context
.getPackageManager()
.getPackageInfo(context.getPackagââeName(), 0)
.firstInstallTime
;
public long firstInstallTime
The time at which the app was first installed. Units are as per System.currentTimeMillis().Now you can compare two date and get months diffrent by using GregorianCalendar
after you get one month different do as you want..clear sharedPrefrence.edit().clear().commit()
Cela dépend.
Le moyen le plus simple est de le supprimer lorsque l'utilisateur démarre l'application. Lorsque les applications sont créées, vous vérifiez les SharedPreferences pour la dernière fois mise à jour. S'il est nul (la première fois), vous enregistrez l'heure actuelle en millisecondes sous la forme d'un long. S'il n'est pas nul, vous le lisez et le comparez à l'heure actuelle. Si c'est moins d'un mois, vous ne faites rien. Si c'est plus d'un mois, vous effacez les préférences partagées et, après l'avoir effacée, insérez la nouvelle heure.
Quelque chose comme:
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()
}
}
Bien sûr , si vous souhaitez effacer les SharedPreferences même si l'utilisateur n'ouvre pas l'application, vous devez utiliser un service. C'est plus complexe et plus cher pour le système d'exploitation, vous devriez donc essayer de choisir le premier s'il répond à vos besoins.
Une façon possible,
1. récupérez l'instance de calendrier.
2. Obtenez le maximum du jour du mois.
3. Stocker dans une chaîne var1 au format jj / mm / aaaa.
4. Obtenez la date actuelle à partir d'un objet de calendrier et stockez-la de la même manière à partir du point 3 mais dans var2.
5. Comparez deux chaînes.
6. En cas de correspondance, ce sera le dernier jour du mois et appelez delete () sur vos fichiers.
Terminé.
examiner les services et les émissions. après un mois, supprimez les préférences partagées.
Utilisez AlarmManager