读取活动存储在服务中的SharedPreferences?

时间:2019-05-20 12:24:04

标签: android android-activity service sharedpreferences storage

我正在使用一个类来创建一个始终运行的后台服务。使用Android应用程序时,用户可以输入通过SharedPreferences存储的数据。存储工作良好,存储的数据在存储它的活动中可用。我正在使用这样的SharedPreferences:

SELECT N'' COLLATE <Your Collation>

在服务中,我试图访问存储在活动中的该值。因此,我以相同的方式使用SharedPreferences:

SharedPreferences mPrefs = getSharedPreferences("Identifier",Context.MODE_PRIVATE);

我正在活动中以这种方式存储对象:

SharedPreferences mPrefs = getSharedPreferences("Identifier",Context.MODE_PRIVATE);

并尝试以这种方式读取它,但是json返回null:

Gson gson = new Gson();
SharedPreferences.Editor prefsEditor = mPrefs.edit();
String json = gson.toJson(myObject);
prefsEditor.putString("value",json);
prefsEditor.commit();

有什么主意吗?上下文是否错误?但是应该怎么办?

2 个答案:

答案 0 :(得分:1)

尝试使用默认的共享首选项实例,该实例在所有Activity和Service类之间共享,请使用以下方法。

SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this/*context*/);

这是存储基本数据类型(如布尔值)或可序列化对象的最佳方法。但是,如果要捕获大量JSON数据,则可以考虑使用SQLite数据库。

答案 1 :(得分:0)

问题在于该服务正在不同的进程中运行。因此,我使用了适用于多个过程的托盘:https://github.com/grandcentrix/tray