ci-dessous est mon code pour créer pref partagépartagé Préf retour valeur incorrecte dans certains appareils haut de gamme comme Samsung
public SaveData(Context con) {
this.context = con;
emailSharedPreferences = context.getSharedPreferences(KEY_PREF_EMAIL, Context.MODE_PRIVATE);
emailEdit = emailSharedPreferences.edit();
}
pour les données ensemble
public void setData(boolean accepted) {
emailEdit = emailSharedPreferences.edit();
emailEdit.putBoolean(KEY, accepted);
emailEdit.apply();
}
pour obtenir des données
public Boolean getData() {
emailSharedPreferences = context.getSharedPreferences(KEY_PREF_EMAIL, Context.MODE_PRIVATE);
return emailSharedPreferences.getBoolean(KEY, false);
}
À l'écran de mon lanceur d'applications lorsque j'essaie d'obtenir des données, il retourne "vrai" sur certains appareils.
Maintenant, si j'ai créé pref partagé par le code ci-dessous
private static SharedPreferences getPreferences(Context context) {
// return context.getSharedPreferences(PREF_NAME, MODE);
return PreferenceManager.getDefaultSharedPreferences(context);
}
private static SharedPreferences.Editor getEditor(Context context) {
return getPreferences(context).edit();
}
Pour les données établies
public static void setData(Context context,boolean value){
try {
getEditor(context).putBoolean(KEY, value).commit();
} catch (Exception e) {
e.printStackTrace();
}
}
pour obtenir des données
public static boolean getData(Context context){
try {
return getPreferences(context).getBoolean(KEY, false);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
maintenant il fonctionne bien sur tous les appareils. Quelqu'un peut-il expliquer pourquoi cela se produit?
Lors de l'utilisation de commit(), les données sont immédiatement écrites dans le stockage, lors de l'utilisation de apply(), elles sont uniquement écrites dans le cache. –
J'ai utilisé à la fois la validation et l'application des deux. mais ne fonctionne pas pour moi –