Las preferencias compartidas predeterminadas me dan valores incorrectos en el servicio

Tengo un PreferenceFragment donde he definido un CheckBoxPreference en XML. Necesito verificar este valor en un Servicio, pero siempre me da el valor anterior. Noté que el valor cambia correctamente cuando reinicio la aplicación.

Mi fragmento de preferencia:

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);
    }

 }

Mi 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>

Mi servicio:

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

El registro siempre devuelve el mismo valor sin importar si lo cambio o no, excepto si reinicio la aplicación. Además, en mi MainActivity tengo esa línea en OnCreate ():

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

Crea el archivo de configuración con el valor predeterminado si es necesario.

Estoy haciendo algo mal, la pregunta es ¿qué?

Respuestas a la pregunta(2)

Su respuesta a la pregunta