我有一个玩游戏的活动。用户可能正在从已保存状态恢复或正在启动新游戏。如果恢复,则将要恢复游戏的标识符传递到捆绑包中的活动。如果是新游戏,则该捆绑包的该部分未通过,因此为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");



  它将返回此密钥是否在捆绑包中。

09-11 19:19