Ich lese ListFragment Quellcode und ich sehe diese Implementierung:Aktivität des onDestroy/Fragment des onDestroyView gesetzt Null Praktiken
ListAdapter mAdapter;
ListView mList;
View mEmptyView;
TextView mStandardEmptyView;
View mProgressContainer;
View mListContainer;
CharSequence mEmptyText;
boolean mListShown;
/**
* Detach from list view.
*/
@Override
public void onDestroyView() {
mHandler.removeCallbacks(mRequestFocus);
mList = null;
mListShown = false;
mEmptyView = mProgressContainer = mListContainer = null;
mStandardEmptyView = null;
super.onDestroyView();
}
In dieser Funktion Google-Entwickler eingestellt Null für alle Ansicht Felder, die in ListFragment erklärt und entfernen Rückruf 'mRequestFocus'.
In ListeActivity Quellcode. Google-Entwickler implementiert wie unten:
protected ListAdapter mAdapter;
protected ListView mList;
private Handler mHandler = new Handler();
@Override
protected void onDestroy() {
mHandler.removeCallbacks(mRequestFocus);
super.onDestroy();
}
ich nicht sehen Google-Entwickler MList auf onDestroy von ListActivity Null gesetzt, wie sie für ListFragment Klasse tat.
Meine Frage ist
Warum Google-Entwickler MList in onDestroy von ListActivity Null gesetzt didnot? Irgendwelche Gründe?
Müssen wir Null in alle View-Felder in Activity onDestroy und Fragment onDestroyView setzen?
3. Alle Verhaltensweisen für Satz Null in diesen beiden Funktionen: Aktivität des onDestroy und onDestroyView fragment?
Vielen Dank für Ihre Ideen!
Sehr gut zu erklären. Ich habe eine Frage. Warum haben Google-Entwickler in OnDestroyView von ListFragment Null nicht auf mAdapter gesetzt? Setzen Sie Null auf Nicht-Ui-Feld wie mAdapter ist nicht notwendig? –
Es ist eine gute Frage. In der Regel ist dies egal, aber Adapter enthalten auch einen Verweis auf einen Aktivitätskontext. Ich nehme an, es gilt für den Vertrag der Methode, die 'onDestroyVIEW' ist, also zerstören sie nur die View-Referenzen. Ich denke, es wäre ein unerwartetes Verhalten, wenn Sie 'setListAdapter()' aufrufen, und später rufen Sie 'getListAdapter()' auf und es ist unerklärlicherweise 'null'. Da ein Adapter kein teures Objekt ist, das er behalten kann (außer im Falle von setRetainInstance(), wenn er eine Aktivität verlieren könnte), hat die Veröffentlichung keinen großen Vorteil. – kcoppock
Ich frage mich dann, ob es besser ist, in oncreateview zu lösen, bevor Sie binden? – j2emanue