方向改变,特别是在Android 2.3.3中

时间:2013-07-26 08:09:50

标签: android android-2.3-gingerbread onconfigurationchanged

我的应用程序正在运行Android 2.3.3到4.2.2

我希望通过旋转显示来避免重新启动Activity。另外,我在清单中为这些android:configChanges="orientation|screenSize"添加了属性Activity。感谢LogCat我可以看到onConfigurationChanged()在转动设备时被调用onCreate()。但只有更高版本的Android! 在2.3.3中,在onCreate()

之后调用onConfigurationChanged()

我想避免我的应用程序重启,因为我在AsyncTask下载了一些数据。我认为这是最简单的方法,确保AsyncTask不会随时调用,并确保它不会被取消。

您是否认为在配置更改时避免Activity重新启动是一个好主意?我怎么能为Android 2.3.3处理这个?

1 个答案:

答案 0 :(得分:3)

  

您认为避免重启活动

是个好主意吗?

不是真的。实际上,建议不要使用android:configChanges属性来处理方向更改,这在Android文档中明确指出:“应该避免使用此属性,并且仅作为最后手段使用。
不建议这样做的一个原因是因为有其他配置更改(除了屏幕方向)可以产生活动的重新创建,并且很有可能我们不会处理它们。

但是,很少有可能解决这种特殊情况的解决方案。

  1. 您可以使用IntentService代替AsyncTask。服务在后台运行并与活动生命周期分离,因此您不会受到屏幕方向更改的影响。

  2. AsyncTask放入Fragment。片段可以保留其实例。

  3. 在执行任务时以编程方式锁定屏幕方向。最简单但不太明智,因为这会打破用户体验。

  4. 查看over this blog post示例: