【问题标题】:SharedPreferences of Remote service always return null远程服务的 SharedPreferences 总是返回 null
【发布时间】:2016-07-31 16:57:08
【问题描述】:

当我尝试从远程服务读取数据时,SharedPreferences 出现问题。

首先,在SplashScreenActivity,我的应用startbind 我的RemoteService

第二SplashScreenActivity启动MainActivity,这个MainActivity会将配置信息保存到SharedPreferences

SharedPreferences mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = mSharedPreferences.edit();
editor.putString("ABC_KEY", "abc");
editor.apply();

那么MainActivity会发送Broadcast

sendBroadcast(new Intent("PLZ_READ_DATA"));

最后,在RemoteService接收上面的Broadcast,它会从SharedPreferences读取数据:

SharedPreferences mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String str = mSharedPreferences.getString("ABC_KEY", null);

问题是str 总是null

这里有什么魔力?在这种情况下,任何人都可以解释它并给出从SharedPreferences读取数据的解决方案。

【问题讨论】:

  • 您的远程服务是否在同一个进程中运行?如果你在前后添加日志会发生什么,你能确定插入先发生吗?
  • RemoteService 将在另一个进程中运行。我在将数据写入SharedPreferences 之前和之后进行了记录,一切正常,但读取过程没有按预期工作。

标签: android android-activity service broadcastreceiver sharedpreferences


【解决方案1】:

由于您要处理多个进程,因此您需要指定支持该模式的模式,这可以从this answer 看出

【讨论】:

  • 好的,非常感谢。我会尝试另一种方式,因为 MODE_MULTI_PROCESS 在 Android M 中已被弃用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多