Я хочу сбросить значения общих настроек, когда мой мобильный телефон выключен?
Проблема с кнопкой «Назад» в моем приложении
Ответы (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" />
Насколько я знаю, единственная возможность - использовать OnDestroy()
, но ваша программа должна работать, когда устройство выключено.
Тот же вопрос, что и: 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" />