Domanda di progettazione in sostanza - con uno PreferenceActivity
si dovrebbe implementarlo OnSharedPreferenceChangeListener
o si dovrebbe definire questa funzionalità in un'altra classe, ad esempio in una classe interna? C'è qualche ragione per preferire quella sull'altro approccio?Android: dove deve essere definito/registrato un OnSharedPreferenceChangeListener
Anche dove registrare l'ascoltatore? Voglio dire the docs e il buon senso impone di registrare/annullare la registrazione in onResume/onPause
rispettivamente, ma aver visto azillionregistrations in onCreate
Mi chiedo solo se mi manca qualcosa.
Anche io non sono abbastanza sicuro se un errore per annullare la registrazione (in modo here per esempio l'annullamento della registrazione non può essere chiamato come onStop
non è garantito di essere chiamato) sarebbe necessariamente portare ad una perdita. Quindi, se ho per esempio
class MyPref extends PreferenceActivity implements
OnSharedPreferenceChangeListener {
SharedPreferences sharedPreferences;
// init sharedPreferences
onStart(){
sharedPreferences.registerOnSharedPreferenceChangeListener(this);
}
// no unregistration
}
sarebbe questo fuoriuscire l'istanza MyPref
volta che torno a uno dei miei altre attività?
Infine, le stesse considerazioni valgono per OnPreferenceChangeListener
?
Modifica: tornando a quello che vedo alcun modo per annullare la registrazione del OnPreferenceChangeListener
- sono cieco ??
_Per registrazione e annullamento della registrazione_ - perché? non sarebbe necessario annullare la registrazione dell'ascoltatore? e la perdita che ho chiesto? –
Non è necessario annullarne la registrazione. Il sistema lo ucciderà semplicemente se decide di uccidere l'app. Inoltre, ogni app viene eseguita nella propria istanza VM, che viene anch'essa uccisa, quindi non è necessario annullare la registrazione di qualcosa e non si verificherà alcuna perdita: tutta la memoria verrà rilasciata quando il processo muore (il kernel si occuperà di ciò) . Questo è il motivo per cui è consigliabile salvare i dati nella memoria persistente in 'onPause' o' onStop'. Tuttavia, ciò non avviene tra 'onPause' e' onResume'. – Shade
@Mr_and_Mrs_D, hai trovato una risposta migliore a questa domanda? Se è così, perché non rispondi a beneficio di tutti? – Shade