我有一个玩游戏的活动。用户可能正在从已保存状态恢复或正在启动新游戏。如果恢复,则将要恢复游戏的标识符传递到捆绑包中的活动。如果是新游戏,则该捆绑包的该部分未通过,因此为null
。我目前实现如下...
Bundle bundle = this.getIntent().getExtras();
int GameNumberToResume;
boolean StartNewGame = false;
try
{
GameNumberToResume = bundle.getInt("GameToResume");
}
catch (Exception e)
{
System.out.println("Exception Catch, so we start a new game.");
StartNewGame = true;
System.out.println((e.toString()));
}
...而且有效。
StartNewGame
在启动新树或恢复已保存的树时启动决策树,并且在我们恢复时,GameNumberToResume
具有要恢复的游戏ID。但是,Android Studio会发出软警告...变量“ GameNumberToResume”已分配但从未访问过。
...因为在决策树的各个部分中,当我需要恢复游戏的价值时,我会通过
bundle.getInt("GameToResume")
直接将其从捆绑中取出。所以这是我的问题:我应该做些什么?我可以通过向下游引用变量
GameNumberToResume
而不是从包中拉出它来消除警告,但是在我看来,这似乎不会改变任何东西。该警告的目的是指出我在浪费内存,并且如果这样做,则在作用域中我仍然有两件事都包含相同的值。有没有一种方法可以检测是否存在“ GameToResume”
没有在try / catch循环中进行变量分配的捆绑包?
如果将声明移到循环的
try
部分内,则在循环的
System.gc();
部分之后触发catch
,它会释放变量
GameNumberToResume
使用的内容吗?我知道在这种特定情况下,这可能并不重要,但是它很容易遵循并且说明了我对如何有效编码Android的理解中的一个普遍漏洞。
最佳答案
查看
bundle.containsKey ("GameToResume");
它将返回此密钥是否在捆绑包中。