Мне нужно очистить данные из SharedPreference
, когда приложение будет удалено из списка последних.
Есть ли способ для этого?
Мне нужно очистить данные из SharedPreference
, когда приложение будет удалено из списка последних.
Есть ли способ для этого?
Как уже было сказано, нет никакой гарантии, что вы получите обратный вызов, когда ваше приложение будет убито, независимо от того, какой обратный вызов вы попытаетесь использовать. Тем не менее, мне все еще интересно, почему вы используете SharedPreferences
, если вы не хотите, чтобы эти данные были постоянными, это не относится к этому классу. При этом вы должны обрабатывать данные, как и любые другие данные внутри вашего приложения.
Если вам по какой-то причине необходимо использовать SharedPreferences
, то правильный способ очистить его - это когда вы запускаете приложение, а не когда вы его закрываете. Таким образом, у вас не будет никаких проблем.
Какое действие вызывается при удалении приложения из последний список в Android?
В приведенной выше ссылке рассказывается, как ввести метод обратного вызова при удалении приложения из списка последних. Затем вы можете обновить свою общую переменную в этой функции.
Я так не думаю, когда приложение очищается от фона, метод onDestroy() в большинстве случаев не вызывается. Следовательно, приложение не получает никакого метода обратного вызова для этого. Если вы хотите это сделать, то почему бы вам не использовать некоторую статическую переменную или объекты (если это возможно) в классе приложения, в зависимости от требований. Они будут повторно инициализироваться каждый раз при запуске приложения, может быть, если это может вам помочь.
Вы можете сделать это с помощью Service.
Создайте липкую службу:
и переопределите функцию onTaskRemoved
, чтобы очистить ваши общие настройки.
public class CheckAppRemovedService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onTaskRemoved(Intent rootIntent) {
super.onTaskRemoved(rootIntent);
//YOUR CODE TO CLEAR SHARED PREFS.
}
}
Запустите службу, когда вы начнете свою деятельность.
Intent intent = new Intent(MyActivity.this, CheckAppRemovedService.class);
startService(intent);
Когда приложение удаляется из списка недавних, вызывается метод onDestroy(). Поэтому очистите свои значения SharedPreference
, когда будет вызываться метод onDestroy().
@Override
protected void onDestroy() {
super.onDestroy();
SharedPreferences.Editor editor = getSharedPreferences("APP", MODE_PRIVATE).edit();
editor.putString("YOUR_DATA_KEY", "").apply(); //data nullified
}
См. жизненный цикл активности в Android ниже:
onDestroy
никогда не будет вызываться, когда приложение будет уничтожено, но когда пользователь существует, продолжая использовать приложение.
- person Iulian Popescu; 22.02.2018