2011-05-17 39 views
1

所以,我有以下后会失去状态:Android应用程序启动另一个意图

一个通用类,很多在我的Android应用我的活动的机会,通过我的清单设置类:

<application android:name="com.dev.games.phraseparty.Common"... /> 

现在,在这个类中,我有几个对象被构造来保存应用程序状态和公共服务,以执行在通用构造函数中构造的应用程序

GameStateVO gameState; 

public Common() 
{ 
    gameState = new GameStateVO(); 
} 

我的问题是我的Activity有一个Admob广告。当用户点击广告时,它会调用webbrowser意图在网页浏览器中打开广告网址。

现在,当我从admob发起的webbrowser点击回来时,它将我带回到校准活动并调用OnCreate方法。

这个活动然后得到一个空指针异常,因为它会做这样的事情:

public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
Common common = this.getApplication(); 

//null pointer here since the game state VO is null since the Common has lost its state. 
int score = common.getGameState().getScore(); 

} 
+0

这听起来像你的应用程序正在经历一个艰难的杀戮。你可能想要坚持国家在onStop的硬性杀死说偏见。你可以通过使用一个标志isSavedInstanceState来做到这一点。在onResume中将其设置为false,并在onSaveInstanceState中将其设置为true。然后在onStop中写入prefs if(!isSavedInstanceState)。如果onCreate == null中的包,则从onCreate中的prefs读入。 – JAL 2011-05-17 06:17:20

回答

1

如果没有活动的前台活动,那么你的进程已经成熟由操作系统关机,以获得更多的资源。特别是我注意到的浏览器应用程序使用了大量的资源,并且可以迅速导致后台活动和后来的进程被终止。有一项服务可以帮助保持你的过程,但即使如此,如果需要的话,它仍然可以被杀死。我认为你需要使用活动生存周期方法来保存&恢复你的状态。请参阅文档的process lifecycle部分以获取更多信息

+0

但是,应用程序类中存储的数据呢? – neteinstein 2011-05-18 16:02:44

1

您可能想要考虑实施onSaveInstanceState方法:这样可以在任何相关信息中断之前存储它。请参阅http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState%28android.os.Bundle%29以了解您需要实施的实际呼叫,而Saving Android Activity state using Save Instance State是一个非常优秀的示例。

+0

谢谢你的帮助。我现在正在拯救国家和恢复我的方法,并没有更多的崩溃。 – Logan 2011-05-17 19:09:30

+0

很高兴知道这对你有用。 – Femi 2011-05-17 19:41:27

相关问题