远程服务的 SharedPreferences 总是 return null
SharedPreferences of Remote service always return null
当我尝试从远程服务读取数据时,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
读取数据的解决方案。
由于您要处理多个进程,因此您需要指定支持该模式的模式,从 this answer
可以看出
当我尝试从远程服务读取数据时,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
读取数据的解决方案。
由于您要处理多个进程,因此您需要指定支持该模式的模式,从 this answer
可以看出