我有一个Service
,它有自己的流程:
<service
android:name=".services.Commander"
android:label="@string/commander"
android:process=":commander_process" >
</service>
在此服务中,使用AsyncTask
执行executeOnExecutor
。在onPostExecute
方法中,我想使用以下代码编写数据:
SharedPreferences prefs = getSharedPreferences("MY_APP_KEY", Context.MODE_PRIVATE);
prefs.edit().putString(Constants.PREF_KEY_APP_PASSWORD, MD5.get(password)).apply();
但是,此代码没有效果,并且prefs不会更新。我也尝试了commit()
而不是apply()
,但它也没有用。然后我尝试了MODE_MULTI_PROCESS
而不是MODE_PRIVATE
:
SharedPreferences prefs = getSharedPreferences("MY_APP_KEY", Context.MODE_MULTI_PROCESS);
它没有用。
我的代码适用于Android 2.3.6,但它不适用于Android 4.2.2。我该如何解决?
答案 0 :(得分:2)
不幸的是,即使使用SharedPreferences
,process-safe
也不是MODE_MULTI_PROCESS
。所以我使用与我的主要活动相同的过程运行Service
,现在它正常运行。我更改了manifest
xml:
<service
android:name=".services.Commander"
android:label="@string/commander" >
</service>