2013-05-13 2 views
1

У моего приложения есть активность и услуга. Когда я впервые написал это, я научился использовать sharedPreferences из книги commonsware, используя MODE_PRIVATE. Приложение выросло, и по причинам, выходящим за рамки этой публикации, теперь мне нужно запустить свою службу в другом процессе.SharedPreference с вопросом MODE_MULTI_PROCESS

Я нашел, что могу сделать это, указав имя, начинающееся с двоеточия в android: process statement в моем файле манифеста.

Однако теперь моя деятельность и мое обслуживание больше не читают одни и те же sharedPreferences. Изучая эту проблему, я вижу много рекомендаций для использования MODE_MULTI_PROCESS. Но я не могу понять, как это сделать.

SharedPreferences myMemory = getSharedPreferences("myMemory", MODE_MULTI_PROCESS); 

Это не работает, потому что затмение не может найти MODE_MULTI_PROCESS как он может найти MODE_PRIVATE или MODE_WORLD_READABLE.

Итак, как я могу указать MODE_MULTI_PROCESS ??
спасибо, Gary

+1

Уже ответил в http://stackoverflow.com/questions/11159386/getdefaultsharedpreferences-and-mode-multi-process/11160430#11160430 –

ответ

0

MODE_MULTI_PROCESS был добавлен в уровень API уровня 11. Если он не отображается, скорее всего, вы ориентируетесь на более старую версию.

Вам потребуется либо изменить версию Android, на которую вы нацеливаете свой манифест, либо использовать Build.VERSION.SDK_INT во время выполнения, чтобы обнаружить новую платформу. Многопроцесс подразумевается в более ранних версиях.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
    myMemory = context.getSharedPreferences("myMemory", Context.MODE_MULTI_PROCESS); 
} else { 
    myMemory = context.getSharedPreferences("myMemory", Context.MODE_PRIVATE); 
} 

См: http://developer.android.com/guide/topics/manifest/uses-sdk-element.html

Смежные вопросы