Multithreading in Android

4

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 di Runnable , new Thread(new CustomRunnable())
    • Sottoclassi Thread e sovrascrittura run
  • 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!

    
posta Carpetfizz 16.03.2017 - 23:47
fonte

0 risposte

Leggi altre domande sui tag