所以我有以下内容:
我的许多活动在我的Android应用程序中访问的Common类,通过在我的清单中设置类:
<application android:name="com.dev.games.phraseparty.Common"... />
现在,在这个类中,我有几个构造的对象,用于保存应用程序状态和公共服务,以执行在Common构造函数中构造的应用程序
即
GameStateVO gameState;
public Common()
{
gameState = new GameStateVO();
}
我的问题是我的活动有一个Admob广告。当用户点击广告时,它会调用webbrowser意图在网络浏览器中打开广告网址。
现在,当我从admob启动的webbrowser中单击回来时,它会将我带回到caling活动并调用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 :(得分:1)
如果您没有活动的前台活动,那么您的流程已经成熟,可以通过操作系统关闭以获取更多资源。特别是我注意到的浏览器应用程序使用了大量资源,并且很快就会导致后台活动以及后来的进程被终止。提供服务可以帮助您保持流程,但即使这样,它仍然可以在需要时被终止。我认为你需要使用活动生命周期循环方法来保存&amp;恢复你的状态。有关详细信息,请参阅文档的process lifecycle部分
答案 1 :(得分:1)
您可能希望考虑实施onSaveInstanceState
方法:这可以让您在被杀死之前存储任何相关信息。请参阅http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState%28android.os.Bundle%29了解您需要实施的实际电话,Saving Android Activity state using Save Instance State是一个非常出色的示例。