在同步适配器中更新的偏好值未在我的应用

时间:2018-01-23 06:56:26

标签: android asynchronous service

我的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);
    }

我尝试从应用程序调用相同的方法,它正在更新。即使我调试并检查它也是从同步适配器调用上述方法,但数据没有更新。

在同步适配器中我检查了记录数据,它被正确记录但在应用程序中却没有反映出来。我认为它正在为同步适配器和应用程序采用单独的首选项,因为两者都将处于不同的过程

1 个答案:

答案 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