Android 应用程序在启动另一个 Intent 后丢失状态

标签 android android-intent state

所以我有以下内容:

通过在我的 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/

相关文章:

android - 确定自上次用户在 Android 中 Activity 以来的时间

java - Android 应用程序在真实设备与模拟器上显示不同

android - 如何更新我的通知以显示我的时间计数器发生变化?

android - 生成的 ListView 应用程序的 Intent 停止工作

android - getIntent.getExtras.getString() 中的空值

c++ - 如何在不使用全局变量的情况下通知主线程状态的外部线程?

ios - 快速处理多个状态

scala - scan() 的常见模式,我最终不关心状态

java - 为什么与 RealmObject 相关的 RealmList 不更新?

android - 我的 Android 应用程序可以从非 Google 的服务器下载其数据文件吗?