我的Android应用程序变得有点沉重而且运行缓慢。我还没有完善优化。我还在梳理一些漏洞。 只是一些背景:我的应用程序是一个游戏,用户可以赢或输(自然)。我还没有制作“胜利序列”或“丢失序列”,所以我只是把代码放在
中if(userWins())
this.finish();
应用程序突然退出。到目前为止没有错。但是,当我尝试再次打开应用程序时,我得到一个空白屏幕,当我应该获得选项按钮。如果我关闭手机并再次打开,我可以使用该应用程序,但否则我不能。我不知道为什么会这样。
旁注:我的AngryBirds副本也有类似的问题。如果我“不正确地”退出游戏屏幕(即在游戏中间,而不是在选项菜单中),我无法再次打开应用程序,直到我重新启动手机。
答案 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";
}