在 Android 中保存方向变化的一些数据
据我了解,任何方向更改都会针对新方向重新创建您的 Android 活动。
有没有办法在方向改变时存储/保存原始方向的一些数据?
我想存储一些位图,这样我就不必在方向更改时再次加载它。
As far as I've understood, your Android activity will be recreated for the new orientation on any orientation changes.
Is there a way to store / save some of the data from the original orientation upon the orientation change?
I'd like to store some Bitmaps, so I don't have to load it again on the orientation change.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
就可维护性和调试而言,使用静态变量/类是一种不好的方法。
我一直在使用 Activity.onRetainNonConfigurationInstance ,但我现在发现它已被弃用(可能是从 honeycomb 或更高版本开始)。
Activity.onRetainNonConfigurationInstance
使用此方法,只需调用
Activity。 getLastNonConfigurationInstance
来检索您在onRetainNonConfigurationInstance
中返回的同一对象。请务必检查 null 并强制转换为正确的类(您可以返回/获取任何类)。 Activity.getLastNonConfigurationInstance伪代码中的示例用法如下
: ,如果您的目标版本最高为 2.xx,则可以使用该方法。否则,Google 建议您使用
Fragment.setRetainInstance
。这是通过兼容包向后兼容的。Fragment.setRetainInstance
Using static variables/classes is a bad approach in terms of maintainability and debugging.
I have been using
Activity.onRetainNonConfigurationInstance
but I found out just now that this is deprecated (probably since honeycomb or later).Activity.onRetainNonConfigurationInstance
Using this method, just call
Activity.getLastNonConfigurationInstance
to retrieve the same object you returned in theonRetainNonConfigurationInstance
. Be sure to check for null and cast to the right class (you can return/get any class). Activity.getLastNonConfigurationInstanceA sample usage in pseudo-code would be:
So, if you are targetting up to 2.x.x you can use that method. Otherwise, google recommends you to use
Fragment.setRetainInstance
. This is backwards compatible via the compability package.Fragment.setRetainInstance
将项目保存在父活动或静态实用程序类中。
否则,您可以使用清单告诉应用程序不要破坏屏幕大小调整时的活动。查看这篇文章:http://developer.android.com/guide/topics/resources/runtime -changes.html
Save the items in a parent activity or static utility class.
Otherwise, you can use the manifest to tell the app to not destroy the activity on screen resizes. Check out this article: http://developer.android.com/guide/topics/resources/runtime-changes.html
实际上,Android 开发者网站上有一篇非常好的文章涵盖了这个主题。
全文。
Actually there is a very nice article on the Android Developer site which covers this topic.
The full article.
运行您的活动的进程将不会重新启动。 Android 框架只会创建您的 Activity 的一个新实例。因此,作为最简单的解决方案,您可以将数据存储在静态变量中。
Process running your activity will not be restarted. Android framework will just create a new instance of your activity. So as simplest solution you can store your data in static variables.
您可以尝试使用共享首选项:
editor edit =preferences.edit();
edit.putString("用户名", "new_value_for_user");
编辑.commit();
you can try using sharedpreferences:
editor edit = preferences.edit();
edit.putString("username", "new_value_for_user");
edit.commit();