2010-07-23 10 views
5

Non riesco a trovare alcuna documentazione sui dettagli del ciclo di esecuzione di un'attività per Android.Anatomia di un ciclo di esecuzione Android

Apple documenta "anatomy of a run loop" e questo è praticamente quello che sto cercando. La documentazione di Android dice solo "Activity Is Running" nel suo diagramma di stato del ciclo di vita. Ovviamente questo è supportato da una sorta di ciclo di esecuzione.

Qualcuno ha qualche intuizione (nota anche come documentazione) all'interno del ciclo di esecuzione di un'attività?

modifica - Devo chiarire che presumo che il ciclo di esecuzione sia effettivamente posseduto ed eseguito dal thread dell'interfaccia utente principale. La funzionalità corrente dell'attività è probabilmente iniettata in questo runloop a un certo punto. Sono interessato al ciclo generale di esecuzione del thread dell'interfaccia utente e al ruolo che l'attività svolge in esso.

+0

Devo mancare qualcosa. Quali ulteriori dettagli sono necessari di "Attività in esecuzione"? Perché è importante ciò che Android sta facendo in quel ciclo, a patto di "implementare" o "estendere" le cose appropriate per consentire alla tua app di fare ciò che deve fare? – kiswa

+0

Perché quando si scrivono applicazioni con thread, le caratteristiche dei loop di esecuzione possono essere informazioni utili per una vasta gamma di motivi. Detto questo, penso che la sola curiosità sarebbe una valida ragione. – DougW

+0

Chiedere "approfondimenti sul ciclo di esecuzione di un'attività" è una domanda troppo ampia. – CommonsWare

risposta

3

La risposta breve è "non ti preoccupare, è fatto per te".

Le attività e altri costrutti si trovano sopra android.os.Looper, comunicando con le istanze di android.os.Handler. A Looper gestisce il "ciclo di esecuzione", inviando messaggi da una coda e bloccando il thread quando è vuoto. Handler s comunicano con uno Looper di un thread e forniscono un meccanismo per lavorare con la coda dei messaggi.

La maggior parte delle volte non è necessario lavorare con nessuno dei due direttamente. Gli eventi del ciclo di vita per i principali componenti delle applicazioni come Attività e Servizi verranno inviati al tuo codice. Se sei curioso di sapere cosa c'è sotto il cofano, le fonti per entrambi sono disponibili:

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/Looper.java

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/Handler.java

+0

Speravo che ci fosse una versione più digerita di queste informazioni, ma se non c'è non c'è e questa è la risposta. Grazie adamp. – DougW

0

Aggiornato:

Non c'è davvero niente di specifico in cui da "L'attività è in esecuzione." L'attività mostra semplicemente l'interfaccia utente, gestisce l'input, esegue tutte le funzioni necessarie e avvia un'altra attività.

Se si è interessati a quali implicazioni il multithreading avrebbe nel ciclo di esecuzione, non esiste una relazione reale. Le tue discussioni possono semplicemente svolgere il loro lavoro e lo stato dell'Attività funzionerà in modo indipendente e aggiornerà automaticamente l'interfaccia utente (a condizione che chiami correttamente postInvalidate()).


originale:

Date un'occhiata al primo diagramma in questa pagina: http://developer.android.com/reference/android/app/Activity.html

Specifica la "vita" di ogni attività e ciò che gli Stati può essere in, se è quello che si stai cercando.

+0

Qual è l'argomento a cui mi sono collegato ... Voglio sapere che cosa sta succedendo nella sezione "Attività è in esecuzione". – DougW

+0

Woops, mio ​​errore. Modificherò la mia risposta tra un minuto. –

+0

Nessun problema Andy. C'è sicuramente un ciclo di esecuzione sottostante, e sono sicuro che assomigli a quello che ho collegato per iphone. Lo stato di "esecuzione" delle attività è presumibilmente inserito nel runloop dell'interfaccia globale del thread, ma ha certamente il proprio insieme di passaggi su ciascun ciclo per controllare callback, stato, ecc. Sono curioso di sapere come sia l'intero shebang. – DougW

Problemi correlati