在此之后无法重新打开Android应用程序。完成()

在此之后无法重新打开Android应用程序。完成(),android,Android,我的Android应用程序变得有点笨重,而且运行缓慢。我还没来得及考虑。我还在熨一些虫子。 只是一些背景:我的应用程序是一个游戏,用户可以赢或输自然。我还没有做一个赢序列或输序列,所以我只是把代码放进去 if(userWins()) this.finish(); 应用程序突然退出的位置。到目前为止没有什么问题。但是,当我再次尝试打开应用程序时,我会看到一个空白屏幕,这时我应该会看到选项按钮。如果我关掉手机,然后再打开,我可以使用这个应用程序,但否则我不能。我不知道这是为什么 旁注:我的《

我的Android应用程序变得有点笨重,而且运行缓慢。我还没来得及考虑。我还在熨一些虫子。 只是一些背景:我的应用程序是一个游戏,用户可以赢或输自然。我还没有做一个赢序列或输序列,所以我只是把代码放进去

if(userWins())
   this.finish();
应用程序突然退出的位置。到目前为止没有什么问题。但是,当我再次尝试打开应用程序时,我会看到一个空白屏幕,这时我应该会看到选项按钮。如果我关掉手机,然后再打开,我可以使用这个应用程序,但否则我不能。我不知道这是为什么

旁注:我的《愤怒的小鸟》也有类似的问题。如果我退出游戏屏幕不正确,即在游戏中,而不是在选项菜单中,我不能打开应用程序,直到我重新启动我的手机。p> 当你调用finishandroid时,不要终止进程。如果重新启动应用程序,除非操作系统需要资源,否则进程将保持运行。 见:

这就是重新启动时它工作的原因。您不需要重新启动,只要使用adb shell kill或任务killer(如果您不是root用户)终止进程即可

应用程序可能会留下一些用旧值初始化的变量,当您重新启动活动时,您会发现自己处于不稳定状态,变量指向旧数据,其他变量指向新初始化的数据

您需要在onDestroy事件中将旧数据设置为null,或者确保在onCreate事件中完成初始化。您可以根据数据是否可以重用来选择哪一个

查找单例或此类初始化结构:

if (mVar == null) {
 mVar = "stuff";
}

听起来有些静态值在游戏结束时没有被清除。