0

我在这种方法中将数据存储到“outState”:

@Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);

        outState.putInt("my_int", mValue);

    }

这意味着,当活动重新启动时,在该onCreate()方法中,我可以执行以下操作:

if (null != savedInstanceState) {

savedInstanceState.getInt("my_int");
}

但是,这会导致屏幕关闭后出现问题。当屏幕关闭时,活动被终止。这意味着 onSaveInstanceState()如果在屏幕关闭期间发生旋转,则不会调用它,并且它savedInstancestate为 null,因为活动已完全重新启动。结果,即使设备已旋转,我的值也没有保存和恢复。

我该如何解决这个问题?

4

1 回答 1

0

您必须检查的几件事

  1. 如果屏幕处于锁定或关闭状态,您的应用程序甚至不会旋转,因此不会调用任何内容。(发生这种情况是因为应用程序/活动在后台如何旋转,就像按下主页键一样)

  2. 确保当应用程序进入后台时,您没有在应用程序的任何地方调用完成。

  3. 还要检查,当您将应用程序保持在后台时,您的应用程序是否会崩溃?

在应用程序运行时按主页按钮,并使用最近的应用程序屏幕将其置于前面。检查是否onCreate()再次调用。如果是这样,那么您的应用程序在进入后台时会崩溃或完成。

我已经在几乎 10 种不同的设备上进行了测试,包括 Sony Xperia Z、Samsung Galaxy s3、Nexus 4(如评论中所述))并且运行良好。

于 2014-01-20T10:29:08.737 回答