SharedPreferences Длительное значение

Здесь я создаю SharedPreferences если я не ошибаюсь, я использую этот код:

 SharedPreferences sp = getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.putLong("ExactTime", minutesToMilliseconds(NumberPicker2.getValue())); editor.commit(); 

То, что я делаю, это получить value от NumberPicker и я хочу сохранить это value и после перезапуска пользователя APP или даже перезагрузки устройства (я не знаю, делает ли SharedPreferences это …), когда пользователь открывает APP это все тот же номер, выбранный из NumberPicker .

И я хочу использовать это в классе, который расширяет Service . Я пробовал:

 SharedPreferences sp = this.getSharedPreferences("ExactTime", Context.MODE_PRIVATE); WifiTimeSearch = sp.getLong("ExactTime", 0); 

Здесь я потерялся … Я читал, что это «0» означает значение по умолчанию, но я хочу использовать то же значение, которое я сохранил в SharedPreferences … И когда я пытаюсь использовать это значение Long , Значение равно «0».

Что я делаю неправильно?

Вы читаете и пишите в разные файлы SharedPreference.

Кроме того, используя getPreferences() , вы пишете в SharedPreferences, которые являются локальными для этого Activity.

Из исходного кода:

 /** * Retrieve a {@link SharedPreferences} object for accessing preferences * that are private to this activity. This simply calls the underlying * {@link #getSharedPreferences(String, int)} method by passing in this activity's * class name as the preferences name. * * @param mode Operating mode. Use {@link #MODE_PRIVATE} for the default * operation, {@link #MODE_WORLD_READABLE} and * {@link #MODE_WORLD_WRITEABLE} to control permissions. * * @return Returns the single SharedPreferences instance that can be used * to retrieve and modify the preference values. */ public SharedPreferences getPreferences(int mode) { return getSharedPreferences(getLocalClassName(), mode); } 

Чтобы он работал, просто используйте стандартные SharedPreferences для вашего приложения:

Письмо:

  SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor = sp.edit(); editor.putLong("ExactTime", minutesToMilliseconds(NumberPicker2.getValue())); editor.commit(); 

Чтение:

  SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); WifiTimeSearch = sp.getLong("ExactTime", 0); 

Обратите внимание, что пока вы находитесь в Управлении или службе, вы можете использовать this как Контекст.

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

Попробуйте этот код:

 SharedPreferences sp = getSharedPreferences("ExactTime",Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.putLong("ExactTime", minutesToMilliseconds(NumberPicker2.getValue())); editor.commit(); 

Я думаю, проблема в том, что вы передаете имя файла предпочтения как « ExactTime » при чтении из настроек, при сохранении вы не указываете никаких

Попробуй это

 SharedPreferences sp = getSharedPreferences(null,Context.MODE_PRIVATE); WifiTimeSearch = sp.getLong("ExactTime", 0); 
Intereting Posts
Возможность отправки смс с использованием Sim1 или Sim2 программно Как преобразовать массив байтов изображения в кодировку base64, представляющую jpg XML-атрибуты от макета слияния до RelativeLayout через надувание Почему эта переменная установлена ​​в пустую строку, когда она уже инициализирована пустой строкой? Как и когда закрыть базу данных sqlite в приложении с множеством действий и услуг Почему мы не можем использовать прозрачные системные панели с ActionBar Пробовал все, кроме android finish (); Активность не работает Время в йоде потребляет слишком много памяти ContentResolver.insert возвращает null Ошибка keytool: java.security.UnrecoverableKeyException: невозможно восстановить ключевой андроид Как запустить приложение Android на устройстве с муравьем Ошибка Android при получении информации с сервера «RPC: s-5: AEC-0» в Google Play? Почему мой ListView ничего не показывает? Android gradle-experimental с привязкой данных не работает? Android SeekBar thumb получает обрезание / обрезание