在this.finish()之后无法重新打开Android应用程序

时间:2011-04-13 03:25:53

标签: android

我的Android应用程序变得有点沉重而且运行缓慢。我还没有完善优化。我还在梳理一些漏洞。 只是一些背景:我的应用程序是一个游戏,用户可以赢或输(自然)。我还没有制作“胜利序列”或“丢失序列”,所以我只是把代码放在

if(userWins())
   this.finish();

应用程序突然退出。到目前为止没有错。但是,当我尝试再次打开应用程序时,我得到一个空白屏幕,当我应该获得选项按钮。如果我关闭手机并再次打开,我可以使用该应用程序,但否则我不能。我不知道为什么会这样。

旁注:我的AngryBirds副本也有类似的问题。如果我“不正确地”退出游戏屏幕(即在游戏中间,而不是在选项菜单中),我无法再次打开应用程序,直到我重新启动手机。

1 个答案:

答案 0 :(得分:0)

当您致电finish() Android时,请不要终止该进程。如果您重新启动应用程序,除非操作系统需要资源,否则该过程将继续运行。 见:http://developer.android.com/reference/android/app/Activity.html#ProcessLifecycle

这就是重启时的原因。 (你不需要重启,只需要使用adb shell kill <PID>或任务杀手杀死进程,如果你不是root用户)

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

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

寻找单身人士,或寻找这种初始化结构:

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