2010-12-02 134 views

回答

28

您可以随时在您的着陆页上使用您的应用程序返回按钮的点击这样的代码调用退出从堆栈中,您将按下后退按钮,它将无任何例外地关闭应用程序。

7

有没有一个好方法来做到这一点。有一个nice explanation/overview of your options here

简而言之,如果这是一个Silverlight应用程序(不是XNA),它不受支持。您可以简单地抛出一个未处理的异常,并且该应用程序将退出。我不会建议这样做,这似乎是一种黑客行为,也是一种相当粗暴的做法。

Here is a way to make it look nicer,但在一天结束时它仍然会引发异常。我不知道应用程序认证过程是否会查看是否抛出未处理的异常,但我想这可能是一个问题。

+0

谢谢你的链接!它帮助!毕竟,我决定取消退出按钮。 :D – Vercas 2010-12-02 19:01:12

+0

这完全错了。自第一次发布以来,您必须使用`NavigationSerice.Back()`命令离开应用程序。如果你不在root中,只要应用程序关闭,你就可以使用它。但其他的东西被黑客攻击,不推荐,对不起。 – goldengel 2011-08-23 12:41:48

+0

我认为微软检查未处理的异常并拒绝具有它的应用程序。 – SKandeel 2011-11-15 02:28:12

8

确认已知的解决方案提供“退出”按钮,目前我没有看到从WP7应用程序实现“退出”的强制性理由。

该平台完全能够管理应用程序的关闭。越多的应用程序不提供退出,更快的用户将习惯于不考虑应用程序管理,并让平台管理它。容易 - - 使用开始,背部等

如果用户希望从当前应用程序的去做些别的事情很快

用户将只是导航他们的设备他们只投中开始。

.Exit(),虽然可用于xna,但实际上不再需要。在CTP期间有一个证书要求,游戏必须提供退出按钮。现在这消失了。

非游戏应用程序从来没有需要实现这一点。

这个话题的讨论越多(它在这个区块的运行真的很好),对我来说指标越多,就不需要编码出口。

还应该提到应用程序的证书请求是特定的应用程序不应该有未处理的异常。

+2

通常建议您尝试与平台配合,而不是与之对抗。用户很好地保持一致性。 – 2010-12-03 22:52:18

5

最简单的做法是从根/主页进行模拟。我猜这正是什么应用程序(那些已经退出按钮)像水果忍者做的。

if (NavigationService.CanGoBack) 
{ 
    NavigationService.GoBack(); 
} 

顺便说一句,上面的代码片段适用于silverlight应用程序。

+0

这是唯一真正的答案。我无法相信4个upvotes的答案,例外或破坏应用程序。 – goldengel 2011-08-23 12:34:37

0
private void exitBUtton_ONclick(object sender, RoutedEventArgs e) 
    { 
     throw new Exception("ExitAppException"); 
    } 
4

退出应用程序的另一种方式是调用Microsoft Xna框架的Game类的退出函数。

例如:

if (NavigationService.CanGoBack) 
{ 
    while (NavigationService.RemoveBackEntry() != null) 
    { 
     NavigationService.RemoveBackEntry(); 
    } 
} 

这将删除回条目:

Microsoft.Xna.Framework.Game game = new Microsoft.Xna.Framework.Game(); 
game.Exit();