2011-06-08 126 views
0

我有一个活动,其中我初始化一些静态变量(应用程序的菜单)。在另一个活动中,我在一些if-子句中使用这些变量。内存问题(?)导致崩溃

如果我在第二项活动中,按“主页”按钮以将应用程序置于后台并在几分钟后立即恢复,或者立即应用程序仍然可以使用。如果我在等待大约10分钟后恢复,它会崩溃。

我用的智能手机有很多小部件和应用程序,它们会自动刷新。正因为如此,我认为变量从内存中被删除,因为它变满了。如果我恢复应用程序会崩溃在一个点,在这里我只是使用if从句,如:

if(couldBeTrue){ 
//do something 
} 

我无法想象到另一个想法可能导致这个问题。

你认为我的假设是正确的吗?调试它的最佳方法是什么?


编辑: 我很抱歉信息不佳。我再试一次。

我有3类:

OpenFeintApp延伸应用: 开始,每次我开始或恢复应用程序(仅包含变量和OpenFeint的一些代码)

MenuActivity延伸活动: 此活动是发射器活动。包含所需的静态变量。这些变量是用于设置的。还有一些最终的静态变量,我可以很容易地导出不同的版本。

public final static boolean EXTRA_CONTENT_ONE = false; 
public final static boolean EXTRA_CONTENT_TWO = true; 
public final static boolean EXTRA_CONTENT_THREE = false; 

public static int SETTINGS_ONE = 3; 
public static int SETTINGS_TWO = 0; 
public static int SETTINGS_THREE = 1; 
public static int SETTINGS_FOR = 5; 

GameActivity延伸活动(AdMob整合)(如果我恢复应用程序,我暂停了应用程序后,而在GameActivity玩就不会被调用):如果我以后恢复 不会恢复之后崩溃几分钟。 (Galaxy S,它会自动刷新很多东西)如果我暂停此活动并在大约10分钟后恢复活动,将会崩溃。在此活动恢复之前,将会调用OpenFeintApp。

我在这一点上一个NullPointerException:

if (MenuActivity.EXTRA_CONTENT_ONE) //This variable is false 
+0

需要更多信息。包括,你知道,什么代码崩溃了,因为我们不是通灵。 – 2011-06-08 14:04:56

+0

原始表达式是什么样的?该应用程序不能崩溃if-a-simple-boolean-expression – Kaj 2011-06-08 14:05:14

回答

1

而不是在您的Activity中使用成员变量的public static,您应该考虑use of global variables。通过这种方式,只要应用程序处于活动状态,变量就会保留。

1

要修改你的假设:我想这是不是安全使用另一个活动的静态数据与预期它会在那里任何时候我的其他活动存在。这绝对是一个有效的假设。

您的活动包括您可以覆盖的onPause()和onResume()方法,并且您可以存储和检索状态数据。使用它们会稍微好一些。

right解决方案虽然包括一个根本不需要访问静态数据成员的解决方案。

+0

谢谢!我应该如何保存设置和最终静态变量以导出不同的版本? – Xazen 2011-06-09 14:52:54