据我所知,当设备发生任何方向变化时,您的Android活动将重新创建。
有没有一种方法可以在方向改变时存储/保存原始方向中的一些数据?
我想要存储一些位图,这样我就不必在方向改变时重新加载它们。
有没有一种方法可以在方向改变时存储/保存原始方向中的一些数据?
我想要存储一些位图,这样我就不必在方向改变时重新加载它们。
使用静态变量/类在可维护性和调试方面是一种不好的方法。
我一直在使用Activity.onRetainNonConfigurationInstance
但是我刚刚发现这个方法已经被弃用了(大概从蜂窝版本或更高版本开始)。
Activity.onRetainNonConfigurationInstance
使用此方法,只需调用Activity.getLastNonConfigurationInstance
即可检索与onRetainNonConfigurationInstance
中返回的相同对象。请确保检查null并将其转换为正确的类别(可以返回/获取任何类别)。 Activity.getLastNonConfigurationInstance
伪代码中示例用法如下:
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及以下,你可以使用该方法。否则,谷歌建议你使用Fragment.setRetainInstance
。这个方法是通过兼容包向后兼容的。
Fragment.setRetainInstance将项目保存在父活动或静态工具类中。
否则,您可以使用清单告诉应用程序在屏幕大小调整时不销毁活动。请查看此文章:http://developer.android.com/guide/topics/resources/runtime-changes.html
运行您的活动的进程不会被重新启动。Android框架只会创建一个新的您活动的实例。所以,最简单的解决方案是将您的数据存储在静态变量中。
Editor edit = preferences.edit();
edit.putString("username", "new_value_for_user");
edit.commit();