在Android中保存一些关于方向改变的数据
据我所知,在任何方向更改时,您的Android活动都将为新方向重新创建 有没有办法在方向更改时存储/保存原始方向的部分数据在Android中保存一些关于方向改变的数据,android,device-orientation,orientation-changes,Android,Device Orientation,Orientation Changes,据我所知,在任何方向更改时,您的Android活动都将为新方向重新创建 有没有办法在方向更改时存储/保存原始方向的部分数据 我想存储一些位图,这样我就不必在方向更改时再次加载它。运行活动的进程将不会重新启动。Android框架将创建一个新的活动实例。因此,作为最简单的解决方案,您可以将数据存储在静态变量中。将项目保存在父活动或静态实用程序类中 否则,您可以使用清单告诉应用程序不要在屏幕调整大小时销毁活动。查看这篇文章:实际上,Android开发者网站上有一篇很好的文章介绍了这个主题 一些设备,如
我想存储一些位图,这样我就不必在方向更改时再次加载它。运行活动的进程将不会重新启动。Android框架将创建一个新的活动实例。因此,作为最简单的解决方案,您可以将数据存储在静态变量中。将项目保存在父活动或静态实用程序类中
否则,您可以使用清单告诉应用程序不要在屏幕调整大小时销毁活动。查看这篇文章:实际上,Android开发者网站上有一篇很好的文章介绍了这个主题 一些设备,如T-Mobile G1,可以更改其硬件 运行时的配置。例如,当你打开键盘时, 屏幕从纵向转向横向 方向 为了简化Android应用程序的开发,Android系统 自动处理配置更改事件并重新启动 具有新配置的当前活动 [……] 虽然这种行为非常强大,但因为您的应用程序能够适应 在运行时自动切换到设备的配置,它是 有时会让新安卓开发者感到困惑,他们想知道为什么他们的 活动被销毁并重新创建 面对这个“问题”,一些开发人员选择处理配置 改变自身,这通常是一种短期解决方案 只会让他们以后的生活复杂化 [……]
在可维护性和调试方面,使用静态变量/类是一种糟糕的方法
我一直在使用
Activity.onRetainNonConfigurationInstance
,但我刚刚发现这是不推荐的(可能是从honeycomb或更高版本开始)。
使用此方法,只需调用Activity.getLastNonConfigurationInstance
,即可检索在onRetainNonConfigurationInstance
中返回的相同对象。确保检查null并将其转换为正确的类(您可以返回/获取任何类)
伪代码中的示例用法如下:
onRetainNonConfigurationInstance:
return "I need to remember this next time";
onCreate:
...
String messageToShow = null;
Object data = getLastNonConfigurationInstance();
if(data != null)
messageToShow = (String)data;
else
messageToShow = "Nothing to show";
因此,如果您的目标是2.x.x,您可以使用该方法。否则,google建议您使用
Fragment.setRetainInstance
。这是通过compability软件包向后兼容的
您可以尝试使用SharedReference:
editor edit=preferences.edit();
edit.putString(“用户名”,“用户的新值”);
edit.commit()代码>因此,我基本上可以创建静态变量,并将其初始化为null。然后,进行空检查,如果它们不是空的,我将重用它们,如果它们是空的,我将加载它们。正确吗?注意静态变量的存储;你可能会读到Romain Guy写的这篇非常有趣的文章:非常感谢,这对我帮助很大,我想我现在可以解决我的问题了:-)我会在几分钟后把这个标记为已回答。@Pedro Loureiro但这不适用于活动,只适用于一个片段,对吗?