Standardmäßige gemeinsame Einstellungen geben mir falsche Werte im Dienst

Ich habe ein PreferenceFragment, in dem ich eine CheckBoxPreference in XML definiert habe. Ich muss diesen Wert in einem Service überprüfen, er gibt mir jedoch immer den alten Wert. Ich habe festgestellt, dass der Wert beim Neustart der Anwendung korrekt geändert wurde.

Mein Präferenzfragment:

public class OptionsFragment extends PreferenceFragment 
{

    public static final String WIFI_ONLY = "wifi";

    private SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(MyApplication.getInstance());

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.config);
    }

 }

Meine config.xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <CheckBoxPreference
        android:defaultValue="true"
        android:key="wifi"
        android:summary="Check if you want to use wifi only"
        android:title="Use Wifi only" />

</PreferenceScreen>

Mein Service:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(MyApplication.getInstance());        
Log.d(TAG, "isWifiOnly : "+settings.getBoolean(OptionsFragment.WIFI_ONLY, true));

Das Protokoll gibt immer den gleichen Wert zurück, egal ob ich ihn ändere oder nicht, es sei denn, ich starte die App neu. Außerdem habe ich in meiner MainActivity diese Zeile in OnCreate ():

PreferenceManager.setDefaultValues(getApplicationContext(), R.xml.config, false);

Bei Bedarf wird die Konfigurationsdatei mit dem Standardwert erstellt.

Ich mache was falsch, die Frage ist was?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage