Cerca risorse che insegnano il multithreading in Android e elenca le best practice. Voglio fare un po 'di elaborazione delle immagini sul fotogramma di anteprima della fotocamera (ho già questa parte configurata) ma voglio parallelizzare l'elaborazione. I risultati dei processi asincroni dovrebbero tornare al thread principale e aggiornare l'interfaccia utente.
Sono confuso su come funzionano le seguenti classi:
-
Discussione
-
HandlerThread
-
Handler
-
Looper
Ecco cosa ho capito finora:
-
I thread possono essere utilizzati in diversi modi
- Una classe che implementa l'interfaccia
Runnable
- Uso del costruttore di
Thread
e superamento di un'istanza diRunnable
,new Thread(new CustomRunnable())
- Sottoclassi
Thread
e sovrascritturarun
- Una classe che implementa l'interfaccia
-
I gestori sono collegati a un Looper sul thread in cui viene istanziato il gestore. Un looper contiene una coda messaggi che contiene i risultati dei thread. I messaggi sono consumati dal looper del thread chiamante.
-
Hai il permesso di creare il tuo Looper - perché vorresti farlo?
Alcune domande:
-
Se un telefono ha 4 core e un thread è il thread dell'interfaccia utente posso eseguire solo altri 3 processi in parallelo?
-
Se sposto i thread ad alta velocità, diciamo 30 volte al secondo, esiste una cosa come "esaurire i thread"? Android gestisce l'accodamento di più thread? Sto immaginando Android come l'inizio di una gara con una bandiera a scacchi, le auto sono il
Runnable
s in coda per correre, e l'antipasto lascia solo il 4% diRunnable
s alla volta. Non sono sicuro che questa sia una supposizione corretta. -
I dispositivi Android utilizzano core virtuali? Come faccio a sapere quanti core virtuali ha un dispositivo e come posso controllarli? Esistono diversi modi per implementare core virtuali e il thread sta cambiando uno di loro?
Grazie per qualsiasi consiglio!