【问题标题】:Can we delete SharedPreferences when closing the app我们可以在关闭应用程序时删除 SharedPreferences
【发布时间】:2015-03-13 11:40:16
【问题描述】:

我在谷歌搜索。我可以找到清除共享偏好的答案,但我需要在应用关闭时清除共享偏好。这可能吗?请帮忙。

代码清除共享偏好

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
SharedPreferences preferences = 
PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("UserName", "Tonny");
editor.putInt("UserAge", 20);
editor.commit();

【问题讨论】:

  • 那你为什么首先使用SharedPreferencesSharedPreferences 背后的要点是在您的应用程序的使用中持续存在。
  • 没有确定的方法来检测您的应用何时关闭。如果您有一个活动,您可以在 onDestroy() 方法上执行此操作(这同样不会保护您免受崩溃等)。也许你应该重新考虑为什么需要这样做,看看你是否真的需要这样做?
  • 除了SharedPrefences @CommonsWare还有其他概念吗
  • 你的堆栈表现如何,你什么时候关闭你的应用程序?
  • 还有很多“其他概念而不是SharedPreferences”。但是,由于我们不知道您要做什么,因此我们无法轻松地帮助您解决这些“概念”。一般来说,如果您的数据只想在进程在内存中使用时,您只需将这些数据保存在内存中,而不是文件中。

标签: java android sharedpreferences


【解决方案1】:

每次都可以clear SharedPreferences,无论是在主要活动被销毁时还是在下次运行应用程序时。然而,正如@CommonsWare 指出的那样,这样做会错过SharedPreferences 的全部意义。 (并检查@CommonsWare 的声誉,看看是否相信他们。)SharedPreferences 的目的是存储值以在下次运行应用程序时使用。如果您每次都自动清除它们...

您可以只使用一个变量来存储您的数据。每次应用关闭时这个变量自然会被清除。

【讨论】:

  • 我也将我的数据存储在一个变量中,但存在一个问题,即当 Android 静默杀死应用程序以回收一些内存时,我该如何重新获取我的数据,因为如果我使用的是 shared prefrences那么我的问题就会得到解决。
  • @SudhanshuGaur,如果您想在应用程序的两次不同运行之间保存一个变量,那么sharedPreferences 将是一个合适的地方。
  • 我不是在谈论我在谈论的两个不同的运行假设,用户使用我的应用程序然后按主页按钮,3 小时后他点击最近的应用程序并从那里再次打开我的应用程序但现在如您所知,在某些情况下,android可以刷新我存储在我的活动中的变量所拥有的内存,所以在这里没有共享prefrenc我该如何解决这种情况? PS我只想使用我的变量,直到使用关闭我的应用程序,因为下次我会再次重新初始化这个变量??
  • 不,你没有得到,我的意思是三个小时后用户没有重新启动应用程序,他通过单击最近的应用程序打开我的应用程序,现在问题是假设我在我的应用程序类中存储一个变量现在假设我在我的活动类 B 中需要这个变量值,并且用户在活动 B 上按下主页按钮,现在假设在 3 小时内 android 杀死了我的应用程序类,所以现在当用户从最近的应用程序导航回我的应用程序时我的变量的值将为空,当我尝试在我的 Actviity B 类中再次访问该值时,我的代码将崩溃。
  • 因为当用户关闭应用程序时,我想清除所有数据,因为它是敏感数据。
【解决方案2】:

最好使用其他选项而不是共享首选项。

使用Application类来存储数据是其中一种选择,通过它你可以实现你的需求。

【讨论】:

  • 这在一定程度上是短暂的,但不一定与期望的行为相对应 - 它可以在用户可能认为的会话之间徘徊,并且可以在执行期间被杀死和重新创建用户的东西一样运行。
猜你喜欢
  • 2021-08-15
  • 1970-01-01
  • 2020-12-30
  • 2015-03-28
  • 1970-01-01
  • 2016-05-03
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
相关资源
最近更新 更多