Не дает контекста.MODE MULTI PROCESS to getSharedPreferences () сделать общие префы потокобезопасными?



SharedPreferences не являются потокобезопасными, как ясно сказано в Android docs:




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




Тем не менее, у меня есть приложение, которое может запускать шесть других java.util.Threads, которые commit() для общих префиксов, и они могут быть запущены одновременно (хотя маловероятно, что все они будут). Вот почему я всегда получаю ссылку на мои общие префы из каждого из этих потоков. способ:

SharedPreferences prefs = getSharedPreferences(This.PREFS, Context.MODE_MULTI_PROCESS);


Я не уверен, однако, делает ли это общие префы ссылки потокобезопасными.



Например, когда два из шести потоков запускаются и вызывают commit() одновременно, будет ли один из потоков ждать, пока другой завершит фиксацию, прежде чем он продолжит фиксировать свои собственные изменения, или он не будет фиксировать полностью? Следующая строка из commit() документация просто звучит непонятно для меня:


Обратите внимание, что когда два редактора изменяют предпочтения в то же время выигрывает последний, кто вызовет фиксацию.




Что здесь означает "победа"? Почему это вдруг "состязание" между двумя нитями?



Добавьте 3/11/2013: каждый из потоков изменяет другую запись в общих префиксах-они не изменяют одну и ту же запись ключ-значение.

539   1  

1 ответ:

Согласно этому ответу, общие предпочтения потокобезопасны. Какие документы Андроид сказал, что они не мульти-процесс безопасный.

Https://stackoverflow.com/a/4695567/855680

Comments

    Ничего не найдено.