Sto lavorando su una grande base di codice, e vedere in molti luoghi di questo tipo di codice:perché utilizzare WeakReference su ascoltatori Android?
public static class RequestCustomData implements View.OnClickListener {
WeakReference<MainActivity> mainActivity;
public RequestCustomData(MainActivity activity) {
mainActivity = new WeakReference<>(activity);
}
@Override
public void onClick(View view) {
MainActivity activity = mainActivity.get();
activity.requestCustomData(true, null);
}
}
Sono un po 'confuso perché questo è usato è così tanti posti? Ho preso uno sguardo a questo documento, ma non ha chiarito bene il motivo per cui questo tipo di codice viene così pesantemente utilizzato su app sto lavorando su di esso
https://community.oracle.com/blogs/enicholas/2006/05/04/understanding-weak-references
qualcuno può spiegare a me se questo è un modello comune? Se è così, perché?
Di solito si tratta di un cerotto per i limiti sciatta sulla vita di un ascoltatore. Nota che nel tuo esempio, se mai è entrato in gioco lo scopo previsto di "WeakReference',' onClick (...) 'genererebbe un' NullPointerException'. Se questo codice non si blocca, l'uso di 'WeakReference' è probabilmente un esempio di [settaggio setta cargo] (https://en.wikipedia.org/wiki/Cargo_cult_programming). –