2011-09-08 3 views
15

Come sapere se un'applicazione viene terminata per utente o per iOS quando riavvio app>Come sapere se un'applicazione viene terminato dall'utente o iOS (dopo sfondo 10min)

'By utente' significa "con un doppio clic casa Pulsante e premendo il tasto ". uccisi da utente

'da iOS' significa "app diventerà sfondo stato di esecuzione, e iOS terminano applicazione dopo 10 minuti"

+2

perché iOS chiuderà la tua app dopo 10 minuti in background? – mayuur

+0

Desidero sapere se l'utente ha ucciso l'app o meno (facendo clic sul pulsante rosso '-') – ChangUZ

risposta

9

iOS potrebbe interrompere l'applicazione se le risorse di sistema sono bassi - se questo accade, si vedrà applicationWillTerminate .

In passato, se un utente ha ucciso l'app (task manager, tramite il pulsante doppio clic e poi il rosso "-"), si tratta di un SIGKILL e ApplicationWillTerminate non viene chiamato. Un rapporto a metà del 2013 suggerisce che questo è cambiato e ora viene chiamato applicationWillTerminate.

È possibile utilizzare NSUserDefaults per scrivere un bit di stato in applicationWillTerminate per notare che questa funzione è stata chiamata e presumibilmente è un kill di sistema piuttosto che un kill di utente.

+2

Per quanto riguarda: "Se un utente uccide l'app (task manager, tramite il pulsante doppio clic e poi il rosso '-') è un SIGKILL e applicationWillTerminate non vengono chiamati. " Solo un avvertimento che questo comportamento potrebbe essere cambiato a un certo punto. Un altro sviluppatore del mio team lo ha appena testato e ha riferito che in questo caso è stato chiamato 'applicationWillTerminate'. –

+0

Grazie Steve, sempre buono per mantenere aggiornate queste risposte. –

+2

Appena testato con debugger: viene chiamato applicationWillTerminate, ma non è senza debugger (utilizzando il log della console Xcode per iPhone5 con iOS 7.1) –

10

Se l'app è in sospeso, lo applicationWillTerminate non verrà mai chiamato indipendentemente da chi ha ucciso l'app iOS o utente.

Il tuo applicationWillTerminate10 chiamerà solo quando la tua app è in background e viene uccisa (sia da iOS o utente) il termine sfondo significa che è in esecuzione in background non in stato sospeso.

appena letto this reference

applicationWillTerminate: -Consente sapete che la vostra applicazione è terminata. Questo metodo non viene chiamato se la tua app è sospesa.

Ecco la tabella dei vari stati enter image description here

Background - L'applicazione è in background e l'esecuzione di codice. La maggior parte delle app accede brevemente a questo stato per essere sospeso. Tuttavia, un'app che richiede tempi di esecuzione aggiuntivi può rimanere in questo stato per un periodo di tempo. Inoltre, un'app avviata direttamente nello sfondo immette questo stato anziché lo stato inattivo. Per informazioni su come eseguire il codice mentre si è in background, vedere Esecuzione in background.

+1

Risposta più chiara a questo thread. Grazie! –

Problemi correlati