Les valeurs SharedPreferences ne sont pas affichées si je modifie le fichier sharedPreferences par défaut en interne. Mais si je suis en train de fermer et d'ouvrir une application, alors ça va arriver.Les valeurs SharedPreferences ne proviennent pas si je modifie le fichier SharedPreferences par défaut en interne
En raison de certaines exigences, je stocke le fichier sharedPreferences dans google drive. Après cela, je restaure les mêmes données sharedPreferences dans un autre appareil en utilisant le même compte Google, toutes les données XML se passe bien. Mais dans l'objet sharedPreferences, ces valeurs ne sont pas actualisées. Mais alors que la fermeture et l'ouverture des valeurs d'application se passent bien. Comment rafraîchir les sharedPreferences sans fermer l'application? Ci-dessous est ma méthode pour écrire le fichier sharedPreferences dans le texte par défaut pathstrong du fichier.
private void restore(Context ctx, InputStream myInputs, String path) {
OutputStream myOutput;
try {
myOutput = new FileOutputStream(path);
byte[] buffer = new byte[1024];
int length;
while ((length = myInputs.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
// Close and clear the streams
myOutput.flush();
myOutput.close();
myInputs.close();
googleDriveBackUpActivity.setBackUpInfo();
Toast.makeText(ctx, R.string.successfully_restored_from_google_drive, Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
}
Je suis assez sûr que 'SharedPreferences' met en cache après le premier chargement de sorte qu'il n'a pas besoin de continuer à frapper le disque. Plutôt que d'écrire directement dans le fichier xml, vous devez utiliser 'SharedPreferences.Editor' pour qu'Android sache quand invalider le cache. – Jon