从最近列表中清除应用时,我必须清除SharedPreference
中的数据。
有没有办法呢?
答案 0 :(得分:2)
Which activity is called when app removed from recent list in android?
以上链接告诉您如何从最近列表中删除应用程序时输入回调方法。然后,您可以在该函数中更新共享变量。
答案 1 :(得分:1)
我不这么认为,当应用程序从后台清除时,大多数时候都不会调用onDestroy()方法。因此,应用程序没有获得任何回调方法。 如果你想这样做,那么为什么不在应用程序类中使用一些静态变量或对象(如果可能的话),具体取决于要求。每次应用程序启动时,它们都会重新初始化,如果可以帮助您,可能会重新初始化。
答案 2 :(得分:0)
当从最近的列表中清除应用程序时,将调用onDestroy()方法。在调用onDestroy()方法时清除SharedPreference
值。
@Override
protected void onDestroy() {
super.onDestroy();
SharedPreferences.Editor editor = getSharedPreferences("APP", MODE_PRIVATE).edit();
editor.putString("YOUR_DATA_KEY", "").apply(); //data nullified
}
在下面的android中查看活动的生命周期:
答案 3 :(得分:0)
你可以使用服务来做到这一点。
创建粘性服务:
并覆盖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);
答案 4 :(得分:0)
如前所述,无论您尝试使用何种回叫,都无法保证在您的应用被杀时您会收到回叫。但是,我仍然想知道为什么你要使用SharedPreferences
如果你不希望这些数据是持久的,那么它就是这个类的重点。话虽如此,您应该像应用程序中的任何其他数据一样处理数据。
如果由于某种原因需要使用SharedPreferences
,那么清除它的正确方法是启动应用程序时,而不是杀死它时。这样,你就不会有任何问题。