Удаление общих настроек - PullRequest
       29

Удаление общих настроек

441 голосов
/ 10 сентября 2010

Как удалить данные SharedPreferences для моего приложения?

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

Ответы [ 23 ]

808 голосов
/ 10 сентября 2010

Чтобы удалить определенные значения: SharedPreferences.Editor.remove () , за которым следует commit()

Чтобы удалить их все SharedPreferences.Editor.clear(), а затем commit()

Если вас не волнует возвращаемое значение, и вы используете его из основного потока вашего приложения, рассмотрите вариант использования apply().

152 голосов
/ 07 декабря 2011

Мое решение:

SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
113 голосов
/ 29 марта 2013

Удаление всех настроек:

SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().clear().commit();

Удаление одного предпочтения:

SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().remove("KeyName").commit();
56 голосов
/ 19 января 2012

Если нет необходимости каждый раз удалять его, вы можете удалить его вручную из:

Настройки -> Приложения -> Управление приложениями -> (выберите приложение) -> Очистить данные или удалить

Новые версии Android:

Настройки -> Приложения -> (выберите приложение) -> Хранение -> Очистить данные и очистить кеш

21 голосов
/ 27 августа 2015

Удаление общих настроек Android в одну строку: -)

context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit();

или apply для неблокирующей асинхронной операции:

this.getSharedPreferences("YOUR_PREFS", 0).edit().clear().apply();
17 голосов
/ 15 марта 2016

Кажется, что все решение не полностью работает или устарело

, чтобы очистить все SharedPreferences в действии

      PreferenceManager.getDefaultSharedPreferences(getBaseContext()).
      edit().clear().apply();

Вызовите это из основной активности после onCreate

примечание * я использовал

.apply()

вместо

.commit()

Вы можете выбрать коммит ();

11 голосов
/ 10 марта 2013

Вы можете использовать оболочку adb, чтобы сделать это даже без рутированного телефона.Единственный улов в том, что приложение должно быть отлаживаемым.

run-as <your package name> <command>

Например:

run-as com.asdf.blah rm /data/data/com.asdf.blah/databases/myDB.db

В качестве альтернативы, вы можете просто сделать выше, но без команды, которая направит вас ккорень пакета приложения и позволяет вам выполнять больше команд в контексте приложения.

8 голосов
/ 07 июля 2014
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();
7 голосов
/ 01 марта 2017

Очистить их все:

PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()
7 голосов
/ 14 марта 2017

в определениях классов

private static final String PREFERENCES = "shared_prefs";

private static final SharedPreferences sharedPreferences  = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);

внутри класса

public static void deleteAllSharePrefs(){
        sharedPreferences.edit().clear().commit();
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...