Чтение SharedPreferences, хранящегося в Activity в сервисе? - PullRequest
1 голос
/ 20 мая 2019

Я использую класс для создания фоновой службы, которая работает постоянно.При использовании приложения для Android пользователь может вводить данные, которые хранятся через SharedPreferences.Сохранение работает хорошо, и сохраненные данные доступны в действии, в котором они хранятся.Я использую SharedPreferences следующим образом:

SharedPreferences mPrefs = getSharedPreferences("Identifier",Context.MODE_PRIVATE);

В службе я пытаюсь получить доступ к этим значениям, которые хранятся в деятельности.Поэтому я использую SharedPreferences таким же образом:

SharedPreferences mPrefs = getSharedPreferences("Identifier",Context.MODE_PRIVATE);

Я сохраняю объект таким образом в упражнении:

Gson gson = new Gson();
SharedPreferences.Editor prefsEditor = mPrefs.edit();
String json = gson.toJson(myObject);
prefsEditor.putString("value",json);
prefsEditor.commit();

И пытаюсь прочитать его таким образом, но json возвращаетnull:

Gson gson = new Gson();
String json = mPrefs.getString("value",null);

Есть идеи, что может быть не так?Неверный контекст?Но как это должно быть?

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Попробуйте использовать экземпляр общих предпочтений по умолчанию, который является общим для всех ваших классов Activity и Service, используйте метод ниже.

SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this/*context*/);

Это лучший способ хранения типа данных примитивов (например, логических) илисериализуемые объекты.Однако, если вы собираете много данных JSON, вы можете вместо этого использовать базу данных SQLite.

0 голосов
/ 22 мая 2019

Проблема заключалась в том, что служба работает в другом процессе. Поэтому я использовал лоток, который отлично работает для нескольких процессов: https://github.com/grandcentrix/tray.

...