2016-12-23 5 views
-2
long t = System.currentTimeMillis(); 
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); 
SharedPreferences.Editor editor = sp.edit(); 
editor.putLong("CurrentTime", t); 
editor.apply(); 
File f = new File("/data/data/<mypackage>/shared_prefs/<mypackage>_preferences.xml"); 
boolean b = f.delete(); 
if (b == false) 
    Trace.i("Hello", "we did not delete it"); 
else 
    Trace.i("Hello", "we deleted it"); 
Trace.i("Hello","Reading" +Long.toString(sp.getLong("CurrentTime", 0))); 

Логи:Android DefaultSharedPreference сохраняет значение после удаления файла

I/Hello : We deleted it 
I/Hello : Reading 1482471022197 

Таким образом, ожидаемый результат должен быть Reading 0, что я здесь делаю неправильно?

ответ

0

Вы удалили файлы без общих настроек. Чтобы узнать о том, как работают общие настройки, выполните этот основной учебник: https://www.tutorialspoint.com/android/android_shared_preferences.htm

+0

ли общие предпочтения не сохраняются в файле XML? –

+0

Если я удалил файл, который читает интерфейс разделяемых предпочтений, чтобы извлечь значение, то как я получу значение по умолчанию при чтении? –

+0

@ VinaySharma перейдя по ссылке моего ответа, вы узнаете, как работают общие настройки и как вы можете выполнять операции над ними. – Spartan

0

При создании экземпляра SharedPreferences из файла создаются общие предпочтения. Таким образом, значения кэшируются в памяти. Поэтому, если вы удалите файл, значения будут кэшироваться. Чтобы принять решение об удалении файла SharedPreferences, вам необходимо заново создать экземпляр SharedPreferences

+0

Вы уверены в этом, я создал другой объект sharedPreference и получаю то же значение. –

+0

@VinaySharma, я был уверен прежде, но не сейчас :-) Удаление файла вручную - это не очень хорошая идея в целом. Правильно ли, что вы хотите очистить SharedPreferences? –

+0

Да, я знаю. Этот вопрос исходил из куросити. –

0

Не удалять файл SharedPreferences.

Вместо этого попробуйте ниже код:

sp.edit().clear(); 
sp.edit().commit(); 

 Смежные вопросы

  • Нет связанных вопросов^_^