Desidero eseguire una pulizia in una vista quando l'attività viene distrutta. C'è un modo per ottenere una richiamata nella vista quando l'attività viene distrutta? Ho provato a utilizzare onDetachedFromWindow
, ma non sono sicuro se sia la cosa giusta da fare.Come rilevare se l'attività principale della vista viene distrutta
risposta
Con la consapevolezza che onDestroy non è garantito per essere chiamato, è possibile richiamare semplicemente la visualizzazione nelle attività sul metodo onDestroy.
Modifica in risposta al commento: È possibile ottenere qualsiasi vista dandogli un id nel layout e chiamando findViewById. Ecco un esempio:
layout.xml (che mostra solo il minimo indispensabile)
<LinearLayout>
<com.example.superwidget.DropDownTouchEnabledListView
android:id="@+id/special_list_view" />
</LinearLayout>
MyActivity.java (di nuovo, nudi minimi e assumendo le importazioni propri)
@Override
void onDestroy() {
DownTouchEnabledListView v = (DownTouchEnabledListView)findViewById(R.id.special_list_view);
v.doCallback(with, parameters);
}
Se si desidera ottenere un callback senza dover sovraccaricare il metodo View.onDetachedFromWindow()
, è possibile utilizzare il metodo View.addOnAttachStateChangeListener()
, che accetta un listener di callback come un singolo parametro.
solo per API> 12 –
Potete approfondire un po 'su questo. La mia classe di visualizzazione personalizzata fa parte di un pacchetto separato e questa vista è definita nel layout xml. Quindi invocare qualcosa in vista dalla classe di attività non è fattibile. – bhups
"Quindi invocare qualcosa in vista dalla classe di attività non è fattibile." Certo che lo e. Chiama 'findViewById()', ottieni il widget, lo lanci nella classe appropriata e chiama un metodo su di esso. Detto questo, 'onDetachedFromWindow()' mi sembra una scelta ragionevole. – CommonsWare
@CommonsWe commentate più velocemente di quanto possa essere modificato. :) A proposito, grazie per tutto il lavoro che fai. I tuoi libri/codice/risposte sono stati inestimabili per me. –