2015-03-13 52 views
2

我在谷歌搜索。我可以找到一个清除共享偏好的答案,但我需要清除应用程序关闭时的共享偏好。这是可能的帮助。我们可以在关闭应用程序时删除SharedPreferences

代码共享明确偏好

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

那你为什么首先使用'SharedPreferences'? “SharedPreferences”背后的**点**将贯穿于您的应用程序的使用。 – CommonsWare 2015-03-13 11:44:46

+0

有没有确定性的方式来检测您的应用程序何时关闭。如果你有一个单独的活动,你可以在onDestroy()方法上做(它不会保护你免受崩溃等)。也许你应该重新考虑为什么你需要这样做,看看你是否真的需要这样做? – kha 2015-03-13 11:46:38

+0

有没有其他的概念,而不是SharedPrefences @CommonsWare – 2015-03-13 11:50:53

回答

4

每当主要活动被销毁或下次运行应用程序时,每次都可能生成clear SharedPreferences。然而,正如@CommonsWare指出的那样,这样做会错过SharedPreferences的全部点。 (请查看@ CommonsWare的声望,看看是否相信它们。)SharedPreferences的目的是存储要在下次运行应用程序时使用的值。如果每次都自动清除它们...

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

+0

我也将数据存储在一个变量中,但是有一个问题,当Android默默地杀死应用程序以回收一些内存时,我如何重新获取数据,因为如果我使用'shared prefrences',那么我的问题将得到解决。 – 2017-04-06 11:45:51

+0

@SudhanshuGaur,如果你想在应用程序的两次不同运行之间保存一个变量,那么'sharedPreferences'将是一个适当的地方。 – Suragch 2017-04-06 13:22:09

+0

我不是在谈论两个不同的运行,我说的是,用户使用我的应用程序,然后按主页按钮,3小时后,他点击最近应用程序,然后从那里打开我的应用程序,但现在,因为你知道可以有一个当android可以刷新拥有我的变量,我在我的活动中存储的内存,所以这里没有共享prefrenc如何解决这种情况? P.S我只想使用我的变量,直到用户关闭我的应用程序,因为下次我将重新初始化此变量? – 2017-04-06 14:06:37

-1

更好的去与其他的选择,而不是共享偏好。

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

+0

这会在一定程度上是短暂的,但不一定对应于期望的行为 - 它可以在用户可能认为的会话之间挂起,并且可以在用户的​​事物作为相同的运行期间被杀死并被重新创建。 – 2015-03-13 12:13:02

相关问题