【发布时间】:2016-07-31 16:57:08
【问题描述】:
当我尝试从远程服务读取数据时,SharedPreferences 出现问题。
首先,在SplashScreenActivity,我的应用start 和bind 我的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