2010-10-22 11 views
11

Sto scrivendo un'app per Windows Phone 7. Ho un codice di gestione di "eccezione fatale", in cui so per certo che l'app è completamente eliminata e non ha senso continuare. (Spero di non arrivare mai qui ...). Dal momento che non c'è più nulla che la mia app possa fare se non uscire, voglio che l'utente sia in grado di chiudere l'app.C'è un modo per chiudere programmaticamente la mia app? (Windows Phone 7)

Ma ho notato che non c'è System.Environment.Exit() in Silverlight 4 SDK per Windows Phone 7. C'è un altro modo per chiudere l'app a livello di programmazione?

+2

possib le duplicate di [Windows Phone 7 chiudi l'applicazione] (http://stackoverflow.com/questions/3659195/windows-phone-7-close-application) –

+0

Pensato anche in un primo momento, ma leggendo su di esso sembra che la domanda riguardi come per gestire i problemi irrecuperabili in un'app. Le richieste di certificato suggeriscono che l'eccezione dovrebbe essere gestita e l'app lasciata sul posto affinché l'utente possa controllare la navigazione. –

+0

Si prega di leggere questo: http://blog.jerrynixon.com/2011/11/mango-sample-exit-application.html –

risposta

9

App Cert Reqt:

5.1.2 Terminazione Applicazione

L'applicazione deve gestire le eccezioni sollevata dal .NET Framework e non terminare inaspettatamente. Durante il processo di certificazione , l'applicazione viene monitorata per la chiusura imprevista di . Un'applicazione che termina in modo imprevisto non riesce la certificazione . Quando si gestiscono le eccezioni , un'applicazione deve fornire un messaggio di errore facile da usare. È possibile che venga presentato un messaggio relativo al contesto dell'applicazione . L'applicazione deve continuare a essere in esecuzione e rimanere reattiva all'input dell'utente dopo che l'eccezione è gestita. Un'applicazione che visualizza i messaggi di errore generici o inutili fallirà la certificazione.

ti consiglierei di fornire qualsiasi informazione ritenuta rilevante per l'utente e poi lascia la navigazione del dispositivo per l'utente di gestire alla luce di questo.

Riconoscendo soluzioni note per fornire pulsanti "Esci", al momento non vedo un motivo valido per implementare una "uscita" da un'applicazione WP7.

La piattaforma è completamente in grado di gestire la chiusura di app. Più app non forniscono un'uscita, più gli utenti più veloci saranno abituati a non pensare all'app house keeping e lasciare che sia la piattaforma a gestirlo.

L'utente sarà solo navigare il loro dispositivo utilizzando partenza, di nuovo, ecc

Se l'utente vuole fuori l'applicazione corrente per andare a fare qualcos'altro rapidamente - facile - hanno appena inizio colpito.

. Exit(), sebbene disponibile per xna, non è più necessario. Durante il CTP c'era un requisito per i certificati che i giochi dovevano fornire un pulsante di uscita. Questo è ora andato.

Le app senza giochi non hanno mai avuto bisogno di implementarlo.

Più questo argomento è stato discusso (ed è stato effettivamente eseguito un buon giro intorno al blocco), più gli indicatori suggeriscono che non è necessario codificare un'uscita.

+0

Non avevo letto quella parte della specifica, grazie per averlo indicato. Immagino che la cosa da fare sia dichiarare chiaramente che l'app non può continuare e che l'utente si chiude premendo il pulsante Start hardware. Grazie – will

+0

Ho un'app sul marketplace che lancia un'eccezione per uscire e non è mai stata segnalata come un problema. Due caveat: 1) È chiaramente etichettato come ExitException, quindi quando viene lanciato, è ovvio per quanto riguarda la sua intenzione e 2) è usato solo in un caso, quando un utente sta cercando di uscire dall'app e colpisce il nostro splash personalizzato schermo (che è una pagina, non un'immagine), che ha avviato un'animazione che altrimenti non avrebbe permesso a nessuno di passare. –

+0

Ho appena ricevuto un'app rifiutata dalla certificazione perché viene chiusa generando un'eccezione ExitException. Questo nonostante l'aiuto esplicitamente dichiarato che l'app uscirà in queste circostanze, un'opzione nella schermata delle impostazioni per disabilitare il comportamento, i commenti dei miei beta tester che dichiarano che l'uscita è desiderabile e utile e all'utente viene offerta l'opportunità di visualizzare l'aiuto la prima volta che viene aperta l'app. Ho risposto al rifiuto chiedendo la verosimiglianza di ricevere un'eccezione tecnica se ripresento, ma non ancora una parola. – Yort

3

Un modo "meno brutto" (e apparentemente solo) per uscire è outlined here. Che schifo.

+0

Questo funziona sicuramente ma è un po 'brutto. ;> Grazie per averlo fatto notare però. – will

0

Quando si tenta di chiudere programmaticamente un'applicazione WP7, è necessario tenere a mente i requisiti di certificazione dell'applicazione. Peter Torr has a blog post che può aiutare con il tuo approccio. Paul Jenkins ha recentemente riscontrato problemi con l'app MahTweets nel Marketplace e ha blogged about it here.

HTH, indyfromoz

+0

Questo aiuta, grazie per i collegamenti. – will

2

Ecco come lo faccio:

void Exit() 
{ 
    while (NavigationService.BackStack.Any()) 
     NavigationService.RemoveBackEntry(); 
    base.OnBackKeyPress(new CancelEventArgs()); 
} 

Purtroppo, questo non funziona :(

+0

Dovresti usare 'NavigationService.GoBack()' invece di falso Indietro premi il tasto – onmyway133

+0

Hai provato? Errore. –

+0

prova a spostare "NavigationService.GoBack()" prima del ciclo anziché dopo di esso .. –

-1
App.Current.MainWindow.Close() 
4

per Windows Phone 8, è sufficiente chiamare App.Current.Terminate();

0

Suppongo che tu possa consentire alla tua app di lanciare un'eccezione non gestita, a quel punto, Windows Phone termina automaticamente l'applicazione

Per quanto riguarda i requisiti di certificazione, è possibile chiedere un'eccezione. Questo metodo ha sempre funzionato per me.

3

Spostarsi App.xaml.cs nella soluzione esploratore e aggiungere un metodo statico alla classe App

public static void Exit() 
{ 
     App.Current.Terminate(); 
} 

in modo che si può chiamare ovunque da vostra applicazione, come di seguito

App.Exit(); 
0
App.Current.Terminate(); 

Per Windows Phone 8.1 Silverlight Apps