我如何知道Android SharedReference已成功保存?
我正在保存一些数据以共享来自片段的引用,并希望在其他片段中使用这些数据。但我只希望在成功保存SharedReference时执行片段事务,否则,其他片段将无法检索数据(因为使用这些SharedReference值检索数据) 我的代码:我如何知道Android SharedReference已成功保存?,android,sharedpreferences,Android,Sharedpreferences,我正在保存一些数据以共享来自片段的引用,并希望在其他片段中使用这些数据。但我只希望在成功保存SharedReference时执行片段事务,否则,其他片段将无法检索数据(因为使用这些SharedReference值检索数据) 我的代码: public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{ ... ... ... ... .
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{
... ... ... ... ... ... ... ... ...
public void setSharedPref(String key, String val) {
SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString(key, val);
editor.commit();
}
public String fetchSharedPref(String key) {
SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
String val = sharedPref.getString(key, Constant.SHARED_PREF_DEFAULT_MSN);
return val;
}
}
如何确保SharedReference成功保存?有没有办法实现只有在成功保存SharedReferences时才会调用的回调?表单 应用() 这会立即将数据保存到内存中,并将数据保存到 磁盘位于单独的线程上。因此,不可能阻塞主管道 线程(你的应用程序不会挂起) 这是首选技术,但仅从那时起可用 姜饼(API 9,Android 2.3) commit() 调用此函数会将数据保存到文件中,但是,过程是 在调用它的线程中执行,停止其他所有操作 直到保存完成成功完成后返回true, 失败时为假。 如果需要确认成功保存文件,请使用
commit()
数据或如果您正在开发预姜饼设备<代码>提交()
已从API 1开始提供
因此,您可以在editor.commit()检查状态代码>
commit()
应用()
这会立即将数据保存到内存中,并将数据保存到
磁盘位于单独的线程上。因此,不可能阻塞主管道
线程(你的应用程序不会挂起)
这是首选技术,但仅从那时起可用
姜饼(API 9,Android 2.3)
commit()
调用此函数会将数据保存到文件中,但是,过程是
在调用它的线程中执行,停止其他所有操作
直到保存完成成功完成后返回true,
失败时为假。
如果需要确认成功保存文件,请使用commit()
数据或如果您正在开发预姜饼设备<代码>提交()
已从API 1开始提供
因此,您可以在editor.commit()检查状态代码>
commit()
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();
然后检查commit()
方法
返回类型:布尔值
说明:如果新值成功写入持久性存储,则返回true
从
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();
然后检查commit()
方法
返回类型:布尔值
说明:如果新值成功写入持久性存储,则返回true
如果保存有效,则commit()返回true,否则返回false。
您可以按如下方式更改您的方法
public boolean setSharedPref(String key, String val) {
SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString(key, val);
return editor.commit()
}
如果保存有效,则apply和commit之间的差异将返回true,否则返回false。
您可以按如下方式更改您的方法
public boolean setSharedPref(String key, String val) {
SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString(key, val);
return editor.commit()
}
应用和提交之间的区别找到解决方案:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt("Your Key", "Your value");
boolean savedOrNot = editor.commit();
if(savedOrNot){
// Successfully saved
}else{
// Not saved
}
找到解决方案:
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt("Your Key", "Your value");
boolean savedOrNot = editor.commit();
if(savedOrNot){
// Successfully saved
}else{
// Not saved
}
commit()将返回布尔值,这将让您知道数据是否已保存
如果您想分析保存在共享首选项和sqlite中的所有数据,那么我建议使用
它是android的调试桥,您可以检查所有共享首选项数据和sql数据库以进行调试。编辑器.commit()将返回布尔值,这将让您知道数据是否已保存
如果您想分析保存在共享首选项和sqlite中的所有数据,那么我建议使用
它是android的调试桥梁,您可以检查所有共享首选项数据和sql数据库以进行调试。据我所知,Editor.commit
返回与您所需相同的内容。您可以通过Editor.commit()Editor.commit()对其进行判断,Editor.commit
返回与您需要的内容相同的内容。您可以通过Editor.commit()Editor.commit()判断。我认为您可以使用return Editor.commit()替换整个if-else。commit()
您的链接是俄语的。请把它改成英语。完成。我以为这个页面还没有翻译。你的链接是俄语的。请把它改成英语。完成。我以为这一页还没有翻译。