我的Android应用程序中有一个同步适配器,我在共享首选项中保存了一些数据。
让我通过示例作为时间戳来解释,在同步适配器中我存储时间戳,当我打开/使用我的Android应用程序时,数据仍然显示旧数据。
我正在使用以下代码,
public void saveTimeStamp(long timestamp) {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putLong("timestamp", timestamp);
editor.apply();
}
public long getLoginTimestamp() {
return sharedPreferences.getLong("timestamp", 0);
}
我尝试从应用程序调用相同的方法,它正在更新。即使我调试并检查它也是从同步适配器调用上述方法,但数据没有更新。
在同步适配器中我检查了记录数据,它被正确记录但在应用程序中却没有反映出来。我认为它正在为同步适配器和应用程序采用单独的首选项,因为两者都将处于不同的过程
答案 0 :(得分:0)
我得到了解决方案,
我正在使用
sharedPreferences = context.getSharedPreferences(
context.getString(R.string.preference_name),
Context.MODE_PRIVATE);
现在我改为
sharedPreferences = context.getSharedPreferences(
context.getString(R.string.preference_name),
Context.MODE_MULTI_PROCESS);
同步适配器,应用程序将在不同的进程中运行。如果我们必须使用相同的首选项,那么我们必须传递Context.MODE_MULTI_PROCESS而不是Context.MODE_PRIVATE