SharedPreference не сохраняется с фиксацией на Android 16 - PullRequest
0 голосов
/ 11 декабря 2018

У меня очень странная проблема, которая возникает только на Android 16, а не на Android 27 [я не проверял другую версию, чтобы проверить, где она начинается]

        SharedPreferences.Editor edit = PreferenceManager.getDefaultSharedPreferences(getApplication()).edit();

     edit.putBoolean(getString(R.string.pref_custom_list), false);
      edit.putStringSet(getString(R.string.pref_username_list_, getCurrentUser().getAuth().getUserId()), imported);
 edit.commit();
System.exit(1);

Импортировано Set<String>

когда я перезагружаю приложение и пытаюсь прочитать

 final SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this.getApplication());

final Set<String> cachedList = pref.getStringSet(getString(R.string.pref_username_list_, userid), new HashSet<String>(APIFacade.CACHE_SIZE));

На Android 16 я получаю пустой набор, но на 27 все в порядке

что может быть?

1 Ответ

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

Ваша проблема, вероятно, связана с:

System.exit(1);

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

Независимо от того, из какой активности вы запускаете этот код, следует просто вызвать finish(), когда вы хотите, чтобы пользовательский интерфейс вашего приложения был отклонен, а непытаясь прекратить ваш процесс.

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