所以我有以下内容:
通过在我的 list 中设置类,我的许多 Activity 在我的 android 应用程序中访问的 Common 类:
<application android:name="com.dev.games.phraseparty.Common"... />
现在,在这个类中,我有几个对象被构造来保存应用程序状态和公共(public)服务来执行在通用构造函数中构造的应用程序
即
GameStateVO gameState;
public Common()
{
gameState = new GameStateVO();
}
我的问题是我的 Activity 有一个 Admob 广告。当用户点击广告时,它会调用网络浏览器 Intent 以在网络浏览器中打开广告网址。
现在,当我从 admob 启动的网络浏览器中单击返回时,它会将我带回调用 Activity 并调用 OnCreate 方法。
这个 Activity 然后得到一个空指针异常,因为它会做类似的事情:
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();
}
最佳答案
如果您没有活跃的前台 Activity ,那么您的进程就可以被操作系统关闭以获得更多资源。特别是我注意到的浏览器应用程序使用了大量资源,并且可以快速导致后台 Activity 和后续进程被终止。拥有一项服务可以帮助您保持流程正常运行,但即便如此,如果需要,它仍然可以被终止。我认为您需要使用 Activity 生命周期方法来保存和恢复您的状态。查看process lifecycle文档部分以获取更多信息
关于Android 应用程序在启动另一个 Intent 后丢失状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6025554/