我为Android编写了一个媒体播放器应用。我一直在考虑解决onSaveInstanceState和onRestoreInstanceState的问题,然后发现有一种简单的方法可以阻止活动在屏幕旋转时重新启动:在android:configChanges="orientation|screenSize"
标记内使用<activity>
。说实话,这对我的活动非常有用。但是,我不确定这总是好的,并且不会为将来开发的应用程序创建任何问题。顺便说一句,我记得在Android开发者上发布的一些警告。
切记:声明活动以处理配置时 更改,您有责任重置您的任何元素 提供替代品。如果您声明您的活动来处理 方向改变并且具有应该在其间改变的图像 横向和纵向,您必须为每个资源重新分配每个资源 onConfigurationChanged()中的元素。
有什么想法吗?
答案 0 :(得分:1)
如果您使用相同的横向和纵向布局,那么使用这些标志本身不会产生任何问题,因为旋转只是等同于视图大小的变化。
但是你必须明白,不仅是屏幕旋转可以触发你的活动的破坏和重建 - 如果活动是背景的,它可能会因为内存不足而被杀死 - 保存状态的目的是当它是重新创建的用户无法告诉它已被破坏,因为它看起来和它一样。使用configChanges
标志不能保证您的活动不会被销毁和重新创建,因此它不能免除您对保存状态的责任。
但是,如果您担心实施onSaveInstanceState()
和onRestoreInstanceState()
,您还需要考虑在单次运行应用期间需要保存活动中的哪些数据保存在应用程序调用中(这可能涉及在SharedPreferences
商店中保存数据。)