Ho un'attività che potrebbe avere thread in esecuzione quando l'utente preme indietro e termina() l'attività. Cosa succede a quei fili a quel punto? Cercheranno tutti di completare a meno che non li interrompo in onDestroy()?Cosa succede ai thread e alle visualizzazioni di un'attività quando viene distrutta?
Ad esempio, il codice seguente non è sicuro, perché le mie visualizzazioni e il cursore possono essere distrutti se l'attività termina prima del thread?
Il motivo per cui chiedo è che ho occasionalmente arresti anomali durante le attività che non ho ancora eseguito correttamente il debug, perché si verificano raramente e mai mentre sono in modalità di debug. Da allora ho iniziato a controllare se i miei oggetti vista sono nulli prima di fare qualcosa per loro in runOnUIThread(). Non sono sicuro se questa è la soluzione più pulita, o se questo è il problema.
new Thread()(
public void run(){
crunchOnSomethingForAwhile(mCursor);
MyActivity.this.runOnUIThread(new Runnable(){
public void run(){
mTextView.setText("thread complete");
mCursor.close();
}
}
}
).start();
Che cosa dice LogCat quando si verificano questi arresti anomali? – alexanderblom
Sono accaduti solo quando ero lontano dal mio computer, quindi non ero connesso a LogCat. Forse mi manca qualcosa di veramente semplice, ma quando provo a scaricare il mio log più tardi nella console di Windows, ottengo solo le ultime due pagine di log nella finestra della console - immagino che stia finendo la stanza. Hai bisogno di capire come scaricare il file come file sul mio PC. – Tenfour04