我嘗試訪問Service中的SharedPreferences。但是,當它第一次啓動時,我嘗試閱讀首選項,我只獲得默認值,就好像不存在首選項一樣。但是,在我第一次打開我的首選項活動後,服務會獲取值。這是正常的嗎?SharedPreferences:何時創建?
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:key="CATEGORY_UPDATE"
android:title="@string/autoUpdateCategory_title">
<CheckBoxPreference
android:key="PREF_AUTO_UPDATE"
android:title="@string/preferences_autoUpdate_title"
android:summary="@string/preferences_autoUpdate_summary"
android:defaultValue="true">
</CheckBoxPreference>
<ListPreference
android:key="PREF_UPDATE_FREQ"
android:title="@string/preferences_updateFreq_title"
android:summary="@string/preferences_updateFreq_summary"
android:dialogTitle="@string/preferences_updateFreq_title"
android:entryValues="@array/updateFreq_values"
android:entries="@array/updateFreq_options"
android:defaultValue="30">
</ListPreference>
</PreferenceCategory>
</PreferenceScreen>
public class Preferences extends PreferenceActivity {
public static final String PREF_AUTO_UPDATE = "PREF_AUTO_UPDATE";
public static final String PREF_UPDATE_FREQ = "PREF_UPDATE_FREQ";
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
/* INSIDE SERVICE */
Context context = getApplicationContext();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean autoUpdate =
prefs.getBoolean(Preferences.PREF_AUTO_UPDATE, false);
int updateFreq =Integer.parseInt(prefs.getString(Preferences.PREF_UPDATE_FREQ, "0"));
在第一次服務啓動期間,我得到0和false,儘管默認值。在去偏好活動後,一切都很好。
您的代碼在哪裏設置共享首選項? – fredw 2011-06-09 19:30:21
我已更新我的原始帖子。 – 2011-06-09 19:35:56