Java 我们可以在关闭应用程序时删除SharedReferences吗

Java 我们可以在关闭应用程序时删除SharedReferences吗,java,android,sharedpreferences,Java,Android,Sharedpreferences,我在谷歌上搜索。我可以找到清除共享首选项的答案,但我需要在应用程序关闭时清除共享首选项。这可能吗?请帮忙 代码清除共享首选项 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); SharedPref

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

代码清除共享首选项

 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();

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

使用应用程序类存储数据是其中一个选项,通过它您可以实现您的要求。

无论是在主活动被销毁时还是在应用程序下次运行时,都有可能在每次都存储数据。然而,正如@commonware所指出的,这样做会错过
SharedReferences
的全部要点。(并查看@commonware的声誉,看看是否相信它们。)
SharedReferences
的目的是存储下次运行应用程序时使用的值。如果每次都自动清除它们


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

那么,首先为什么要使用
SharedReferences
SharedReferences
背后的要点是跨应用程序的使用进行持久化。没有确定的方法来检测应用程序何时关闭。如果您只有一个活动,那么可以通过onDestroy()方法来完成(这同样不会保护您免受崩溃等的影响)。也许你应该重新考虑一下为什么你需要这样做,看看你是否真的需要这样做?是否有其他概念而不是SharedReferences@CommonWarehouse你的堆栈是如何运行的,你什么时候关闭了你的应用程序?有许多“其他概念而不是
SharedReferences
”。然而,由于我们不知道你们在试图做什么,我们无法随时帮助你们解决这些“概念”。一般来说,如果您有只想在进程在内存中时使用的数据,您只需在内存中保留该数据,而不是在文件中。这在某种程度上是短暂的,但不一定是与所需行为相对应的数据-它可以在用户可能认为的会话之间徘徊,它可以在用户运行的过程中被删除和重新创建。我也将数据存储在一个变量中,但有一个问题是,当Android无声地删除应用程序以回收一些内存时,我如何重新提取数据,因为如果我使用的是
共享优先级
,那么我的问题就会得到解决。@sudhanshugar,如果您想在应用程序的两次不同运行之间保存一个变量,那么
SharedReferences
将是一个合适的地方。我说的不是两次不同的运行,我想,用户使用我的应用程序,然后按home按钮,3小时后,他点击最近的应用程序,然后再次打开我的应用程序,但现在正如您所知,可能会出现这样的情况,android可以刷新我在活动中存储的变量所拥有的内存,因此在这里没有共享优先级,我如何解决此情况??注:我只想在uses关闭我的应用程序之前使用我的变量,因为下次我将重新初始化此变量??不,你不会得到,我的意思是,三小时后,用户不会重新启动应用程序,他通过单击最近的应用程序打开我的应用程序,现在的问题是假设我在我的应用程序类中存储了一个变量,现在假设我在我的活动类B中需要这个变量值,并且当用户在活动B上时按下了home按钮,现在假设在3小时内android杀死了我的应用程序类,那么现在当用户从最近的应用程序导航回我的应用程序时,我的变量值将为空,当我在Actvity B类中再次尝试访问该值时,我的代码将崩溃。因为当用户关闭应用程序时,我希望清除所有数据,因为它是敏感数据。