2011-10-29 13 views
15

Ho bisogno del tuo aiuto per chiarire la mia comprensione dei vari stati di un'app. Sto per dichiarare la mia interpretazione - ma per favore sentitevi liberi di correggermi.Hai bisogno di chiarimenti su UIApplicationState

1) App è avviato e in esecuzione in primo piano: state = UIApplicationStateActive
2) l'utente preme il tasto di casa: state = UIApplicationStateBackground (????).

Debug stmt in my app shows it to be Active 

3) utente fa doppio rubinetti domestici e uccide l'applicazione: state = UIApplicationStateInactive

Se il valore per caso 2 è infatti attivo, poi, quando è il valore impostato su sfondo?

La mia app basata sulla posizione si basa su questi valori per intraprendere l'azione appropriata per l'utente.

if (([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) || 
    ([UIApplication sharedApplication].applicationState == UIApplicationStateInactive)  ) { 
    // isInBackground = YES; 
    // ------ UI not available 
} 
else { 
    // isInBackground = NO; 
    // ------ UI is available 
} 

Saluti, Sam.

risposta

51

Quando l'utente tocca l'icona dell'applicazione, l'applicazione va brevemente attraverso uno stato transitorio di UIApplicationStateInactive sulla buona strada per diventare UIApplicationStateActive. È qui che l'app si rende pronta per essere mostrata all'utente.

Quando l'app è aperta, lo stato dell'applicazione è UIApplicationStateActive.

Se l'utente preme il tasto home, ed è restituito al (schermata iniziale) trampolino di lancio, o l'applicazione viene interrotto da qualcosa, come ad esempio una telefonata, le transizioni di stato di applicazione di nuovo a UIApplicationStateInactive.

Per lo stato dell'applicazione della propria app diventa UIApplicationStateBackground, l'applicazione dovrebbe registrarsi per un processo in background. Guarda come fare lo sfondo dei servizi di localizzazione. documentazione

+1

Grazie !! Molto chiaramente spiegato. – Sam

+3

@forgot non è completamente vero. L'app è in esecuzione in primo piano ma al momento non riceve eventi. (Potrebbe essere in esecuzione anche un altro codice.) Un'app di solito rimane in questo stato solo brevemente mentre passa a uno stato diverso. puoi saperne di più qui.http: //developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html – Kamarshad

+0

Capisco che, semplicemente, non mi è sembrata interessata alla domanda di il tempo. Lo modifico per mostrare una risposta più completa. – forgot

2

di Apple: UIApplicationState Constants Reference

  • Swift: .Active | Objective-C: UIApplicationStateActive

L'applicazione è in esecuzione in primo piano e in fase di ricezione eventi.

Disponibile in iOS 4.0 e versioni successive.

  • Swift: .Inactive | Objective-C: UIApplicationStateInactive

L'applicazione è in esecuzione in primo piano, ma non riceve gli eventi.Questo potrebbe accadere a causa di un'interruzione o perché l'applicazione è transizione da o verso il fondo.

Disponibile in iOS 4.0 e versioni successive.

  • Swift: .Background | Objective-C: UIApplicationStateBackground

L'applicazione è in esecuzione in background.

Disponibile in iOS 4.0 e versioni successive.

0

Alcuni esempi:

UIApplicationStateActive - applicazione è in esecuzione in primo piano. Semplice.

UIApplicationStateInactive - Ad es App è in background e si sta aprendo attraverso una notifica push (transizione atm). Oppure il centro di controllo/notifica è presentato sopra la tua app. Lo vedi, è in primo piano.

UIApplicationStateBackground - App è in background, ma ancora in esecuzione. Es. riproduzione di musica. Poi - questo può richiedere del tempo o meno (a seconda del processo in esecuzione in background), ma in un punto la tua app viene uccisa. Vedrete snapshot e l'icona dell'applicazione tra le applicazioni ridotte a icona, ma l'applicazione sarà lanciare di nuovo primo.

Problemi correlati