Estou registrando um ouvinte de alteração de preferências como este (na onCreate()
minha atividade principal):
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.registerOnSharedPreferenceChangeListener(
new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(
SharedPreferences prefs, String key) {
System.out.println(key);
}
});
O problema é que o ouvinte nem sempre é chamado. Ele funciona pelas primeiras vezes que uma preferência é alterada e não é mais chamada até eu desinstalar e reinstalar o aplicativo. Parece que não é necessário reiniciar o aplicativo para corrigi-lo.
Encontrei um segmento de lista de discussão relatando o mesmo problema, mas ninguém realmente respondeu. O que estou fazendo de errado?