如何保存/恢复全局variables,即使在操作系统的应用程序

android中,Googlebuild议我们将全局variables保存在Application中。 但有一个问题,如果Android操作系统由于内存不足而中止应用程序,应用程序将被重新创build,并且我保存的全局variables将会丢失。

我不知道何时保存/恢复这些variables,应用程序不会给我们一些方法,如onsaveinstancestate()/ onrestoreinstancestate()。

我有一个想法,但我不能确定它可以工作。 我看到一些应用程序会去slashScreen当os被杀害,也许我们可以保存这些gloablvariables在SplashAvtivity? 由于Activity具有onsaveinstancestate()/ onrestoreinstancestate()方法,因此app首先启动splashActivity,并且不会完成它,当我们findOS kill应用程序时,我们可以去SplashActivity(完成任务中的所有活动),然后onrestoreinstancestate ()。

还有其他好的方法来保存/回溯全局variables吗? 当然,我想如果谷歌可以在应用程序中为我们提供诸如onsaveinstancestate()/ onrestoreinstancestate()这样的方法,那会更好。

Solutions Collecting From Web of "如何保存/恢复全局variables,即使在操作系统的应用程序"

如果variables必须在执行之间持续存在,则必须执行一些磁盘持久性。 Raghunandanbuild议的最简单的方法是使用共享首选项。

要做到这一点,首先请求共享首选项:

SharedPreferences prefs = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = prefs.edit(); editor.putString("key_name", "key_value"); editor.commit(); //important, otherwise it wouldn't save. 

例如,您可以在活动的onStop或onPause中执行此操作(onPause始终被调用,但不能保证在Honeycomb之前将调用Stop)。

在你的onCreate中(或者当你需要这个值的时候),你从SharedPreferences中读取数据并检查是否有值集,否则使用默认值:

 SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0); String myVariable = prefs.getString("key_name", "default_value"); 

现在,如果以前没有保存任何内容,则可以将myVariable与持久值或初始(默认)值一起使用。

有关更多信息,请参阅https://developer.android.com/guide/topics/data/data-storage.html#pref

为了澄清, PREFS_NAME是您的共享首选项文件的名称。 通常,在你的应用程序的前面加上包名,这是很好的做法。