我将数据存储到此方法中的“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
,因为活动已完全重新启动。因此,即使设备已旋转,我的值也未保存和恢复。
我该如何解决这个问题?
答案 0 :(得分:1)
你必须检查几件事
如果屏幕处于锁定状态或处于关闭状态,您的应用程序甚至不会旋转,因此不会调用任何内容。(这是因为应用程序/活动如果在后台可以旋转,就像按下主页一样)< / p>
确保在应用程序进入后台时,您没有在应用中的任何位置调用完成。
同时检查一下,当你的应用程序保留在后台时,你的应用程序会崩溃吗?
在应用程序运行时按主页按钮,使用最近的应用程序屏幕将其显示在前面。
检查onCreate()
是否再次呼叫。如果它是你的应用程序崩溃或完成后它进入后台。
我已经测试过各种各样的设备,差不多有10种不同,包括索尼Xperia Z,三星Galaxy s3,Nexus 4(如评论中所述)),它运行良好。