Куда записываются общие настройки по умолчанию? - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь инициализировать общие настройки по умолчанию при первом запуске моего приложения.Я обнаружил, что в зависимости от того, как я это делаю, существуют различия в файле общих настроек в файловой системе Android.

Если я специально пишу в общие настройки с помощью следующего кода, файл XML находится в /data / data / myapp / shared_prefs /:

SharedPreferences.Editor editor = pref.edit();
if ((myKey = pref.getString("key", null)) == null) {
  myKey = "default value";
  editor.putString("key", myKey );
  editor.commit();
}

Однако, если я использую следующую однострочную строку для инициализации значения по умолчанию, я не вижу файл XML в / data / data / myapp /shared_prefs /:

myKey = pref.getString("key", "default value");

В последнем случае, где хранится файл XML и почему существует различие в поведении?

1 Ответ

0 голосов
/ 11 декабря 2018

Сначала я рассмотрю ваш второй случай:

myKey = pref.getString("key", "default value");

То, что вы говорите здесь: «получите значение, связанное с "key" или "default value", если ничегоявляется".Это чисто операция read .Когда вы получаете "default value", возвращенный из этого метода, система на самом деле не «инициализирует» ваше хранилище общих настроек, а просто говорит «не нашел ничего для "key", так что вот что вы сказали».

Далее ваш первый случай:

SharedPreferences.Editor editor = pref.edit();
if ((myKey = pref.getString("key", null)) == null) {
    myKey = "default value";
    editor.putString("key", myKey );
    editor.commit();
}

Здесь вы делаете то же самое, что и выше в отношении getString(), но на этот раз вы проверяете его возвращаемое значение, а затемвыполнить запись операцию.Тело вашего if блока - это то, что создает файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...