我想用SharedPreferences
來保存一些變量。在我的onCreate()
方法中,我使用SharedPreferences
初始化我的變量,並且當應用程序結束時我想要存儲這些變量。我將這些代碼放在onTerminate()
方法中,但變量永遠不會被存儲。我認爲onTerminate()
方法從來沒有被調用過,因爲我也看到這個方法的評論說// not guaranteed to be called
。那麼如何才能在停止應用程序之前保存我的變量的狀態?我知道如何,我只是不知道在哪裏放置我的代碼。如何使用onTerminate()方法,android?
回答
事實上,爲了安全起見,你應該把它調用的onPause()後保存的onPause東西(),因爲(至少前3.0)的過程可以通過OS殺死。這意味着onStop()和onDestroy()可能會或可能不會被調用。
在任何情況下,沒有任何保證的onDestroy()永遠不會被調用。如果操作系統決定殺死你的進程,它不會在任何活動上調用onDestroy()。
您可以在onPause做()也一樣,這取決於你所需要的。 在這種情況下,每次您的應用程序失去焦點時它都會保存。
,我想,當應用程序結束存儲這個變量。
這不起作用,因爲當「應用程序結束」時你無法控制。
或者:
保存數據時,數據的變化,或
保存數據時,用戶會告訴你(例如,通過某種形式的保存動作欄項目的),或
保存時,你修改的數據活動的
onPause()
被稱爲數據
那麼我嘗試使用onPause()。當我重寫它,並在開始super.onPause()編譯器說無法解析方法。如果我不重寫並且不把super.onPause(),編譯器說這個方法從來沒有用作警告。我很抱歉,如果這聽起來瑣事,我很新的android編程。在另一個項目中,它工作得很好.. – donparalias
@ user1372498:'onPause()'是'Activity'上的一個方法。正如我在回答中所寫的那樣,「當您修改數據的活動的onPause()'**時,保存數據稱爲**」。 – CommonsWare
你是對的,但我有20個不同的活動來處理這些數據,並與應用程序類「溝通」。所有變量都是本地的,所以如果我保存在活動中,應用程序類中的變量將不會被存儲。所以我想我必須使用全局變量,所有活動都可以看到?這就是爲什麼我問如果在應用程序停止之前是否有某種方法可以做某些事情。 – donparalias
- 1. 如何覆蓋wxProcess :: OnTerminate
- 2. 如何在Android中使用showAlert方法?
- 3. 我如何使用Longclick方法android
- 4. Android UserManager:如何使用setRestriction方法?
- 5. 如何在Android中使用Split()方法
- 6. 如何在Android上使用BackBackPresee方法?
- 7. 如何在android中使用OnTabChanged方法?
- 8. Android SQLiteDatabase,如何使用方法replace()?
- 9. 通過AnonymousThread傳遞值onTerminate
- 10. android.app.Application子類,onTerminate不會被調用
- 11. Android GSON使用POST方法
- 12. 使用Android日誌方法
- 13. 使用方法Region.setPath android
- 14. 如何使用Moq.MockRepository.Of()方法
- 15. 如何使用heightForRowAtIndexPath方法?
- 16. 如何使用方法showMessage()?
- 17. 如何使用onItemSelected方法?
- 18. 如何使用setResultCallback方法?
- 19. 如何使用XDocument.CreateWriter方法?
- 20. 如何使用prepareForReuse方法
- 21. 如何使用Socket方法?
- 22. 如何使用readline方法?
- 23. 如何使用HttpClient.GetStreamAsync()方法?
- 24. 如何使用GetHBITMAP方法?
- 25. 如何使用DataTable.Merge方法
- 26. 如何使用CanvasBitmap.SaveAsync方法?
- 27. 如何使用類方法
- 28. 如何使用replace()方法?
- 29. 如何使用onActivityResult方法
- 30. 如何使用getChangedCells方法?
嗯,我嘗試使用的onPause()。當我重寫它,並在開始super.onPause()編譯器說無法解析方法。如果我不重寫並且不把super.onPause(),編譯器說這個方法從來沒有用作警告。我很抱歉,如果這聽起來瑣事,我很新的android編程。在另一個項目中,它工作得很好.. – donparalias
聲音像onPause()的方法簽名與您試圖覆蓋的onPause()方法不同。這也是爲什麼它永遠不會被召喚。您的方法簽名必須如下所示:'public void onPause()'。請檢查。 –
你的方法簽名是什麼意思?在我的代碼,我只是把這個: @Override 公共無效的onPause(){ super.onPause(); } – donparalias