5

L'app del negozio WP 8.1 si comporta in modo molto strano. L'App ripresa che si attiva si attiva come previsto quando faccio rapidamente rotta e poi torno indietro. Ma se tengo l'app in background per un po 'di tempo e quando ritorna, l'app spara gli eventi Constructor e OnNavigatedTo invece dell'evento Resuming e ha la schermata nera "Riprendi ..." per un paio di secondi (circa 4 secondi) .Questa è un'app con un'attività BackgroundAudio. Anche l'app di backgroundAudio di MS di esempio si comporta in questo modo. Qualcuno sa cosa c'è che non va qui?App Ripresa dell'evento non attivato quando l'app viene ripresa in WP 8.1 store app

risposta

5

Sono in procinto di creare un'applicazione WP 8.1 che utilizza anche un'attività audio in background. Tutto ciò che hai spiegato mi succede anche.

Se vedi "Riprendi ..." per alcuni secondi, probabilmente significa che la tua app è stata chiusa dal sistema operativo dopo essere stata sospesa per prima. In questo caso, l'evento di ripresa non verrà attivato perché la tua app è stata completamente uccisa e deve essere riavviata. "Riprendere" di solito significa quando un'app sospesa (non terminata) riprende l'esecuzione.

Quando l'app viene interrotta e quindi "ripresa" dal commutatore dell'app, il metodo di sostituzione Application.OnLaunched() verrà richiamato con e.PreviousExecutionState == ApplicationExecutionState.Terminated. In questo metodo, è necessario verificare se lo stato di esecuzione precedente era terminato e, in tal caso, ripristinare l'app nello stato in cui si trovava prima della sospensione. Questo dà l'illusione all'utente che l'app non è mai stata terminata e possono riprendere quello che stavano facendo in quel momento.

Se si crea un nuovo progetto di Pivot App Windows Phone 8.1 (ad esempio), si noterà che gli eventi del ciclo di vita dell'applicazione vengono gestiti correttamente in App.xaml.cs.

L'app che riprende l'evento si attiva come previsto quando ho rapidamente spostato la distanza e quindi sono tornato indietro.

Questo è un comportamento corretto. Ci vogliono alcuni secondi dopo che l'app è stata messa in background prima che venga sospesa dal sistema operativo, quindi se si riprende l'app prima che il sistema operativo la sospenda, verrà semplicemente ripresa dalla memoria.

Non sono sicuro del motivo per cui le app audio di sfondo sono più suscettibili alla chiusura. Ho anche scoperto che l'app Xbox Music si comporta in modo simile. Speriamo che nella prossima versione di Windows Phone, questo problema verrà risolto.


FYI ecco un diagramma del ciclo di vita dell'applicazione da MSDN (vi consiglio di leggere questa pagina per ulteriori informazioni sul ciclo di vita dell'applicazione):

Application lifecycle

"Ripresa" si verifica solo dalla sospensione agli stati in esecuzione.

+0

Questo è esattamente ciò che accade. Grazie per chiarire la spiegazione. – Heshan

+0

Sai come prevenire questo tipo di comportamento o altri motivi? @Decade Moon – Heshan

1

Ogni volta che l'app riprende dallo sfondo.ci sono due stati può essere in:

  1. Sospeso: si riprende con successo, la navigazione direttamente al OnNavigatedTo; il costruttore non si chiamerà
  2. Terminato: l'app non partirà dallo stato precedente della pagina che hai lasciato, ma invece caricherà nuovamente quella pagina; in questo momento è necessario aver salvato lo stato mentre l'app era in sospeso, in modo da ripristinarlo ora