2015-03-13 71 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

相關問題