Проблема с кнопкой «Назад» в моем приложении

Я хочу сбросить значения общих настроек, когда мой мобильный телефон выключен?


person G.Praveen    schedule 21.09.2011    source источник
comment
Пожалуйста, улучшите свой вопрос, приложите некоторые усилия, иначе он будет закрыт.   -  person Mudassir    schedule 21.09.2011
comment
Повторное задание одного и того же вопроса считается злоупотреблением системой; пожалуйста, не делай этого. Если вы можете уточнить свой вопрос, изменив его, сделайте это. Как только ваш вопрос будет улучшен (см. этот раздел в часто задаваемых вопросах, чтобы узнать, как это сделать), отметьте внимание модератора. Выберите другое и попросите мод, чтобы снова открыть свой вопрос.   -  person    schedule 21.09.2011


Ответы (3)


Как вы можете очистить SharedPreference, когда устройство switched off.

Вы можете очистить его, когда устройство запустится через BraodcastReceiver.

public class PhoneStateReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(final Context context, Intent intent) {

        if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
            //Clear your `SharedPreference` here.
        }
    }
}

В манифесте добавьте это:

<receiver android:name=".receiver.PhoneStateReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>  

Добавить разрешение:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
person Vineet Shukla    schedule 21.09.2011

Насколько я знаю, единственная возможность - использовать OnDestroy(), но ваша программа должна работать, когда устройство выключено.

person Roel Veldhuizen    schedule 21.09.2011

Тот же вопрос, что и: Android: Android: как сделать так, чтобы определенные настройки SharedPreference сбрасывались после перезагрузки системы?

Я не знаю другого способа. Эта реализация довольно проста. Просто обработайте широковещательное действие BOOT_COMPLETED и очистите настройки, вызвав .clear() в SharedPreference.Editor (ответ здесь).

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

public class OnBootReceiver extends BroadcastReceiver{

                @Override
                public void onReceive(Context context, Intent intent) {
                      //clear preferences here         
                }

}

Объявите его также в своем AndroidManifest.xml как:

           <receiver android:name=".OnBootReceiver">
                    <intent-filter>
                            <action android:name="android.intent.action.BOOT_COMPLETED" />
                    </intent-filter>
            </receiver>

Для этого вам также потребуется разрешение:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
person Daniel Novak    schedule 21.09.2011