SharedPreferences не обновляется

У меня странная проблема, из-за которой SharedPreferences не обновляются при возврате в приложение. Вот сценарий:

У меня есть два проекта, которые используют одни и те же общие настройки. Проект1 и Проект2. Это отдельные, но связанные приложения. Они подписаны одним и тем же ключом и используют sharedUserId для обмена информацией.

Project1 открывает Project2.

Project2 получает файл SharedPreferences и записывает в него с помощью этого метода:

Context prefsContext = c.createPackageContext(packageNameOfProject1, Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences prefs = prefsContext.getSharedPreferences(fileName, Context.MODE_PRIVATE);
SharedPreferences.editor editor = prefs.edit();
editor.putBool("bool1", value1);
editor.putBool("bool2", value2);
...
editor.putBool("boolN", valueN);
editor.apply();

Как только это будет сделано, я вернусь в Project1, позвонивfinish().

Затем Project1 читает данные следующим образом:

SharedPreferences prefs = getSharedPreferences(getPreferencesFileName(), Context.MODE_PRIVATE);
Boolean value1 = prefs.getBoolean(fileName, false);
Boolean value2 = prefs.getBoolean(fileName, false);
...
Boolean valueN = prefs.getBoolean(fileName, false);
Map<String, ?> mappings = prefs.getAll();
Set<String> keys = mappings.keySet();
for(String key : keys) {
  log.d(TAG, "_____");
  log.d(TAG, "Key = " + key);
  log.d(TAG, "Value = " + mappings.get(key));
}

Проблема в том, что значения не обновляются в Project1. На основании логов в конце я могу сказать, что файл даже не генерирует сопоставления. Тем не менее, я могу убедиться, что XML обновляется. Если я принудительно остановлю приложение, а затем перезапустите его, все сопоставления будут в Project1. Все значения верны. Тем не менее, мне нужно обновить их, когда пользователь покидает Project2. Я чувствую, что что-то здесь мне не хватает, но я не могу это заметить.

Единственное, что мне удалось найти по этому вопросу:

SharedPreferences.Editor не обновляется после начальной фиксации

Значение SharedPreferences не обновляется

Это не помогает, поскольку я уже это делаю.

У меня WRITE_EXTERNAL_STORAGE установлен в обоих манифестах. Имя файла такое же (иначе я не смог бы прочитать файл при повторном входе в приложение).

РЕДАКТИРОВАТЬ:

Я должен отметить, что я пытался сделатьeditor.commit() вместоeditor.apply() как я и думал, я столкнулся с расой. Проблема все еще сохраняется. Я думаю, что по какой-то причине старая ссылка на SharedPreference в Project1 используется вместо новой, хотя я каждый раз загружаю ее лениво.

EDIT2:

Хорошо, для дальнейшего тестирования, чтобы увидеть, что происходит. Я решил попробовать противоположное направление.

В Project1 я делаю:

Float testFloat (float) Math.random();
Log.d("TEST_FLOAT", "Project1: TEST_FLOAT = " + testFloat);
prefs.edit().putFloat("TEST_FLOAT", testFloat).commit();

В Project2 я делаю:

Log.d("TEST_FLOAT", "Project2: TEST_FLOAT = " + prefs.getFloat("TEST_FLOAT", 0.0f));

Затем я иду вперед и назад между двумя так:Project1->Project2->Project1->Project2->Project1->Project2 и вот результат logcat:

Project1: TEST_FLOAT = 0.30341884
Project2: TEST_FLOAT = 0.30341884
Project1: TEST_FLOAT = 0.89398974
Project2: TEST_FLOAT = 0.30341884
Project1: TEST_FLOAT = 0.81929415
Project2: TEST_FLOAT = 0.30341884

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

Ответы на вопрос(3)

Ваш ответ на вопрос