La mia applicazione utilizza uno HandlerThread
per alcune operazioni condivise tra componenti che devono essere eseguiti su un thread in background. La maggior parte delle volte questa discussione sarà nel suo stato di attesa.Necessario per uscire da un HandlerThread?
Posso lasciare questo HandlerThread
in esecuzione (in attesa) nella mia richiesta, l'invio di messaggi ad esso in caso di necessità, ma mai smettere via HandlerThread.getLooper().quit()
? Ciò potrebbe significare che questo HandlerThread
continuerà a esistere nel suo stato di attesa anche dopo che tutti i miei componenti dell'applicazione sono stati distrutti.
Inizialmente questo sembrava un grosso no per me, qualcosa che non avrei assolutamente voluto fare, ma non ne sono sicuro ora. Quando Android uccide il mio processo, come farà quando è necessario liberare il tempo o la memoria della CPU, finirà questo thread insieme al mio thread dell'interfaccia utente. Inoltre, il thread sarà in attesa, quindi non consumerà alcun tempo di CPU. E oltre a ciò, la mia applicazione utilizza molti AsyncTasks
, che so utilizzare un pool di thread. Da quanto ho capito, AsyncTask
utilizza ThreadPoolExecutor
, che non aderisce ai callback del ciclo di vita delle applicazioni (i thread nel pool quando non sono in uso, è sufficiente aspettare).
Quindi la mia domanda è: posso usare uno HandlerThread
tra più componenti dell'applicazione, mai (o raramente) abbandonarlo e lasciarlo in attesa quando non in uso, senza subire gravi effetti negativi?
sono d'accordo con la tua opinione, perché se una cosa che si deve fare su un altro thread è fatto per un sacco di volte, sarebbe creare un sacco di discussioni , che probabilmente bloccherà l'app. –