Android SharedPreferences Параллелизм - PullRequest
4 голосов
/ 14 февраля 2012

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

Должен ли я использовать ключевое слово synchronized в моих методах, чтобы предотвратить / снизить вероятность возникновения принудительного закрытия? Или ребята из Google сделали SharedPreferences таким образом, чтобы я не беспокоился об этом?

Для записи, я не думаю, что существует большая вероятность столкновения из-за нечастых операций чтения и записи, хотя я не хотел бы предполагать, что все будет просто "работать".

Ответы [ 2 ]

3 голосов
/ 14 февраля 2012

Используйте флаг MODE_MULTI_PROCESS при открытии SharedPreferences. Это было устаревшее (но недокументированное) поведение в Gingerbread и до него (Android 2.3), и этот флаг подразумевается при нацеливании на такие выпуски. Для приложений, ориентированных на версии SDK, более поздние, чем Android 2.3, этот флаг должен быть явно установлен при желании.

Эта константа устарела на уровне API 23.
MODE_MULTI_PROCESS не работает надежно в некоторых версиях Android и, кроме того, не предоставляет никакого механизма для согласования одновременных изменений между процессами. Приложения не должны пытаться использовать его. Вместо этого им следует использовать явный межпроцессный подход к управлению данными, такой как ContentProvider.

1 голос
/ 14 февраля 2012

Согласно android doc .

Примечание. В настоящее время этот класс не поддерживает использование в нескольких процессах.Это будет добавлено позже.

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

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