Почему общие настройки сбрасывались при сбое приложения или принудительном закрытии Android

Я взял код CSIPSIMPLE и переупаковал его в com.mycompany.appname

Проблема в том, что при сбое приложения все значения удаляются из общих настроек.

Почему?

Мое приложение

public class BeemApplication extends Application {

    static BeemApplication application = null;

    public static SharedPreferences mPref;
    public static Editor mEditor;

    public BeemApplication() {

    }

    public static BeemApplication getInstance() {
        if(application != null) {
            return application;
        } else {
            return new BeemApplication();
        }
    }

    @Override
    public void onCreate() {
        super.onCreate();
        application = this;
        mPref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        mEditor = mPref.edit();
    }

    @Override
    public void onTerminate() {
        super.onTerminate();
    }

}

В Activity я получу их как,

BeemApplication.mEditor.putString(ctx.getString(R.string.pref_online_number), number).commit();

BeemApplication.mPref.getString(ctx.getString(R.string.pref_online_number), number).commit();

person Gangadhar Nimballi    schedule 28.11.2014    source источник
comment
опубликуйте logcat в случае crashes   -  person Maveňツ    schedule 28.11.2014
comment
Все значения удаляются из общих настроек — каковы ваши доказательства этого?   -  person CommonsWare    schedule 28.11.2014
comment
Убедитесь, что ни один из ваших элементов настроек не был сохранен с нулевым ключом, потому что после сбоя, когда ваше приложение пытается загрузить файл preferences.xml, это может привести к сбою настроек, и настройки будут удалены. сброшен.   -  person Rami    schedule 28.11.2014
comment
не забудьте вызвать .commit()   -  person mach    schedule 28.11.2014
comment
@CommonsWare, когда я пытаюсь получить сохраненные значения, он дает значения по умолчанию   -  person Gangadhar Nimballi    schedule 29.11.2014
comment
@Rami, каким будет нулевой ключ, все ключи хранятся в файле string.xml   -  person Gangadhar Nimballi    schedule 29.11.2014
comment
@maveňツ, при каждом сбое значения не сбрасываются. Это несколько раз, как при получении сообщений. Если я сам сбою с нулевым значением, настройки не сбрасываются.   -  person Gangadhar Nimballi    schedule 29.11.2014
comment
@GangadharNimbally в string.xml что-то вроде этого: ‹string name=youKeyName›‹/string› дает нулевое значение.   -  person Rami    schedule 29.11.2014
comment
@Rami, нет такого значения в string.xml   -  person Gangadhar Nimballi    schedule 29.11.2014


Ответы (1)


Это распространенная проблема, с которой сталкивались многие, в том числе и я. Взгляните на этот пост Android – общие настройки иногда теряются, который разделяет ваши результаты.

Я бы рекомендовал не хранить постоянные данные в общих настройках, а использовать что-то вроде таблицы базы данных для хранения настроек.

person Byron    schedule 28.11.2014