Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 共享首选项不';应用程序重新启动时无法持久_Java_Android_Sharedpreferences - Fatal编程技术网

Java 共享首选项不';应用程序重新启动时无法持久

Java 共享首选项不';应用程序重新启动时无法持久,java,android,sharedpreferences,Java,Android,Sharedpreferences,我正在制作一个应用程序,我希望用户能够保存他们的偏好。我使用的共享首选项如下: private void writeSettings(String val){ PreferenceManager.getDefaultSharedPreferences(context).edit().putString("status", val).commit(); Log.d("stat", val); } 这很好,阅读也很好。如果我关闭应用程序并重新启动,它就会消失。除非删除应用程序,否则

我正在制作一个应用程序,我希望用户能够保存他们的偏好。我使用的共享首选项如下:

private void writeSettings(String val){
PreferenceManager.getDefaultSharedPreferences(context).edit().putString("status", val).commit();
        Log.d("stat", val);
}

这很好,阅读也很好。如果我关闭应用程序并重新启动,它就会消失。除非删除应用程序,否则不应该保存首选项吗?

在哪里调用writeSettings方法?如果在onStop()或onDestroy()中,有时不会调用它们。如果是这种情况,请将代码添加到onPause()

除此之外,您可以尝试不在链中保存它们,如下所示:

// save string in sharedPreferences 
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = settings.edit();
editor.putString("some_key", value); // here value is the string you want to save
editor.commit();                    

// restore string in sharedPreferences (usually you have this onCreate method) 
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String string = settings.getString("some_key", "");
您必须使用commit()方法在sharedprefernce中以一致状态保存更改


请参阅:

您在哪里调用writeSettings方法?只有在尝试手动清除应用程序数据时,共享首选项数据才会被删除。我想我在某个地方读到,链接时提交不起作用。@raybritton这是问题所在,而不是销毁时,它基本上是停止/启动一个广播接收器,这样他们几乎可以关闭它?(我习惯于网络编程)工作。。我想知道为什么链接这些方法会引起问题?@Marko Niciforovic:你用哪种方法保存共享首选项?我尝试了onDestroy()、onPause()和onStop()。它们都没有保存数据。:(@MAHANTESH您可以将它们保存在任何您想要的函数中,只需确保该函数被调用。您可以通过添加日志并检查日志猫来确保函数是否被调用。如果存在日志,则说明您在共享首选项方面做了一些错误。:)我确实使用了commit()。问题是我把这些方法联系起来了。