关闭屏幕时恢复旋转数据

时间:2014-01-19 17:24:46

标签: android rotation sharedpreferences bundle android-configchanges

我将数据存储到此方法中的“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,因为活动已完全重新启动。因此,即使设备已旋转,我的值也未保存和恢复。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你必须检查几件事

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

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

  3. 同时检查一下,当你的应用程序保留在后台时,你的应用程序会崩溃吗?

  4. 在应用程序运行时按主页按钮,使用最近的应用程序屏幕将其显示在前面。 检查onCreate()是否再次呼叫。如果它是你的应用程序崩溃或完成后它进入后台。

    我已经测试过各种各样的设备,差不多有10种不同,包括索尼Xperia Z,三星Galaxy s3,Nexus 4(如评论中所述)),它运行良好。